国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

spring data mongo @Field 失效問題

cnTomato / 3102人閱讀

摘要:問題使用直接為字段添加新值為,為時,配置的別名不會被成功映射。對于,會當作是個數組,為被操作的秩,屬性在中有定義可以成功映射。對于,會當作是有層級關系。最終會指向這個方法中出問題的就是這行代碼又會調用

問題
@Field("fs")
public Map favoriteStickers = new LinkedHashMap<>();

使用MongoTemplate直接為favoriteStickers字段添加新值key為STICKER@10002,value為1時,@Field配置的別名不會被成功映射。

mongoTemplate.upsert(query(where("uid").is(1), new Update().set("favoriteStickers.STICKER@10002", 1), UserSticker.class);
原因

MongoTemplate會將執行語句中的key(上面的 uidfavoriteStickers.STICKER@10002 )映射成MongoDB中對應的字段,如果在UserSticker類的定義中有相應的配置則會按配置映射。例如問題字段使用的@Field就是用來配置別名的。

對于favoriteStickers.12 , 會當作favoriteStickers是個數組,12為被操作的秩,favoriteStickers屬性在UserSticker中有定義可以成功映射。
對于favoriteStickers.STICKER@10002,會當作是有層級關系。即當作favoriteStickers是一個對象,該對象的定義中有一個STICKER@10002屬性,如果沒有不做映射。favoriteStickers是一個map所以無法映射。

重要源碼

org.springframework.data.mongodb.core.convert.QueryMapper#getMappedObject(org.bson.conversions.Bson, org.springframework.data.mongodb.core.mapping.MongoPersistentEntity)方法就是直接用來映射對象的,在這個方法中的代碼Field field = createPropertyField(entity, key, mappingContext);是用來構建字段的映射關系。

最終會指向org.springframework.data.mongodb.core.convert.QueryMapper.MetadataBackedField#getPath(java.lang.String)這個方法中出問題的就是PropertyPath path = PropertyPath.from(pathExpression.replaceAll(".d+", ""), entity.getTypeInformation());這行代碼又會調用org.springframework.data.mapping.PropertyPath#from(java.lang.String, org.springframework.data.util.TypeInformation)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71704.html

相關文章

  • MongoDB遇上Spring

    摘要:每個條件必須引用一個屬性,并且還可以指定一種比較操作。如果省略比較操作符的話,那么這暗指是一種相等比較操作。 Spring-data對MongoDB進行了很好的支持,接下來就講解一下關于Spring對MongoDB的配置和一些正常的使用 我下面的工程使用的是Spring的Java配置的方式和Maven構建 具體的工程代碼大家可以訪問我的Github地址:https://github.c...

    Lorry_Lu 評論0 收藏0
  • MongoDB遇上Spring

    摘要:每個條件必須引用一個屬性,并且還可以指定一種比較操作。如果省略比較操作符的話,那么這暗指是一種相等比較操作。 Spring-data對MongoDB進行了很好的支持,接下來就講解一下關于Spring對MongoDB的配置和一些正常的使用 我下面的工程使用的是Spring的Java配置的方式和Maven構建 具體的工程代碼大家可以訪問我的Github地址:https://github.c...

    fai1017 評論0 收藏0
  • 使用Spring Data MongoDB持久化文檔數據

    摘要:介紹非關系型數據是文檔型數據,文檔是獨立的實體,文檔數據庫不適用于關聯關系明顯的數據提供了三種方式在應用中使用通過注解實現對象文檔映射使用實現基于模板的數據庫訪問自動化的運行時生成功能注解將類型映射為文檔這是一個文檔指定覆蓋默認的域名啟用 介紹 NoSQL:not only SQL,非關系型數據 MongoDB是文檔型數據,文檔是獨立的實體,文檔數據庫不適用于關聯關系明顯的數據 S...

    alighters 評論0 收藏0
  • 使用Spring Data MongoDB持久化文檔數據

    摘要:介紹非關系型數據是文檔型數據,文檔是獨立的實體,文檔數據庫不適用于關聯關系明顯的數據提供了三種方式在應用中使用通過注解實現對象文檔映射使用實現基于模板的數據庫訪問自動化的運行時生成功能注解將類型映射為文檔這是一個文檔指定覆蓋默認的域名啟用 介紹 NoSQL:not only SQL,非關系型數據 MongoDB是文檔型數據,文檔是獨立的實體,文檔數據庫不適用于關聯關系明顯的數據 S...

    go4it 評論0 收藏0
  • spring data mongo比較兩個字段查詢

    實例 public long countBetweenFields(String userId){ Criteria criteria = new Criteria() { @Override public DBObject getCriteriaObject() { DBObject obj = ne...

    wall2flower 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<