成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

spring data mongo @Field 失效問題

cnTomato / 3110人閱讀

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

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

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

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

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

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

重要源碼

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

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71704.html

相關(guān)文章

  • 當(dāng)MongoDB遇上Spring

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

    Lorry_Lu 評論0 收藏0
  • 當(dāng)MongoDB遇上Spring

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

    fai1017 評論0 收藏0
  • 使用Spring Data MongoDB持久化文檔數(shù)據(jù)

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

    alighters 評論0 收藏0
  • 使用Spring Data MongoDB持久化文檔數(shù)據(jù)

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

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

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

    wall2flower 評論0 收藏0

發(fā)表評論

0條評論

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