摘要:問題使用直接為字段添加新值為,為時(shí),配置的別名不會被成功映射。對于,會當(dāng)作是個(gè)數(shù)組,為被操作的秩,屬性在中有定義可以成功映射。對于,會當(dāng)作是有層級關(guān)系。最終會指向這個(gè)方法中出問題的就是這行代碼又會調(diào)用
問題
@Field("fs") public MapfavoriteStickers = 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
摘要:每個(gè)條件必須引用一個(gè)屬性,并且還可以指定一種比較操作。如果省略比較操作符的話,那么這暗指是一種相等比較操作。 Spring-data對MongoDB進(jìn)行了很好的支持,接下來就講解一下關(guān)于Spring對MongoDB的配置和一些正常的使用 我下面的工程使用的是Spring的Java配置的方式和Maven構(gòu)建 具體的工程代碼大家可以訪問我的Github地址:https://github.c...
摘要:每個(gè)條件必須引用一個(gè)屬性,并且還可以指定一種比較操作。如果省略比較操作符的話,那么這暗指是一種相等比較操作。 Spring-data對MongoDB進(jìn)行了很好的支持,接下來就講解一下關(guān)于Spring對MongoDB的配置和一些正常的使用 我下面的工程使用的是Spring的Java配置的方式和Maven構(gòu)建 具體的工程代碼大家可以訪問我的Github地址:https://github.c...
摘要:介紹非關(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...
摘要:介紹非關(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...
實(shí)例 public long countBetweenFields(String userId){ Criteria criteria = new Criteria() { @Override public DBObject getCriteriaObject() { DBObject obj = ne...
閱讀 4392·2021-11-24 10:24
閱讀 1419·2021-11-22 15:22
閱讀 2048·2021-11-17 09:33
閱讀 2457·2021-09-22 15:29
閱讀 526·2019-08-30 15:55
閱讀 1666·2019-08-29 18:42
閱讀 2742·2019-08-29 12:55
閱讀 1784·2019-08-26 13:55