摘要:問題使用直接為字段添加新值為,為時,配置的別名不會被成功映射。對于,會當作是個數(shù)組,為被操作的秩,屬性在中有定義可以成功映射。對于,會當作是有層級關系。最終會指向這個方法中出問題的就是這行代碼又會調(diào)用
問題
@Field("fs") public MapfavoriteStickers = 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會將執(zhí)行語句中的key(上面的 uid 、 favoriteStickers.STICKER@10002 )映射成MongoDB中對應的字段,如果在UserSticker類的定義中有相應的配置則會按配置映射。例如問題字段使用的@Field就是用來配置別名的。
對于favoriteStickers.12 , 會當作favoriteStickers是個數(shù)組,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);是用來構(gòu)建字段的映射關系。
最終會指向org.springframework.data.mongodb.core.convert.QueryMapper.MetadataBackedField#getPath(java.lang.String)這個方法中出問題的就是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://m.hztianpu.com/yun/71704.html
摘要:每個條件必須引用一個屬性,并且還可以指定一種比較操作。如果省略比較操作符的話,那么這暗指是一種相等比較操作。 Spring-data對MongoDB進行了很好的支持,接下來就講解一下關于Spring對MongoDB的配置和一些正常的使用 我下面的工程使用的是Spring的Java配置的方式和Maven構(gòu)建 具體的工程代碼大家可以訪問我的Github地址:https://github.c...
摘要:每個條件必須引用一個屬性,并且還可以指定一種比較操作。如果省略比較操作符的話,那么這暗指是一種相等比較操作。 Spring-data對MongoDB進行了很好的支持,接下來就講解一下關于Spring對MongoDB的配置和一些正常的使用 我下面的工程使用的是Spring的Java配置的方式和Maven構(gòu)建 具體的工程代碼大家可以訪問我的Github地址:https://github.c...
摘要:介紹非關系型數(shù)據(jù)是文檔型數(shù)據(jù),文檔是獨立的實體,文檔數(shù)據(jù)庫不適用于關聯(lián)關系明顯的數(shù)據(jù)提供了三種方式在應用中使用通過注解實現(xiàn)對象文檔映射使用實現(xiàn)基于模板的數(shù)據(jù)庫訪問自動化的運行時生成功能注解將類型映射為文檔這是一個文檔指定覆蓋默認的域名啟用 介紹 NoSQL:not only SQL,非關系型數(shù)據(jù) MongoDB是文檔型數(shù)據(jù),文檔是獨立的實體,文檔數(shù)據(jù)庫不適用于關聯(lián)關系明顯的數(shù)據(jù) S...
摘要:介紹非關系型數(shù)據(jù)是文檔型數(shù)據(jù),文檔是獨立的實體,文檔數(shù)據(jù)庫不適用于關聯(lián)關系明顯的數(shù)據(jù)提供了三種方式在應用中使用通過注解實現(xiàn)對象文檔映射使用實現(xiàn)基于模板的數(shù)據(jù)庫訪問自動化的運行時生成功能注解將類型映射為文檔這是一個文檔指定覆蓋默認的域名啟用 介紹 NoSQL:not only SQL,非關系型數(shù)據(jù) MongoDB是文檔型數(shù)據(jù),文檔是獨立的實體,文檔數(shù)據(jù)庫不適用于關聯(lián)關系明顯的數(shù)據(jù) S...
實例 public long countBetweenFields(String userId){ Criteria criteria = new Criteria() { @Override public DBObject getCriteriaObject() { DBObject obj = ne...
閱讀 4600·2021-11-24 10:24
閱讀 1504·2021-11-22 15:22
閱讀 2271·2021-11-17 09:33
閱讀 2598·2021-09-22 15:29
閱讀 583·2019-08-30 15:55
閱讀 1736·2019-08-29 18:42
閱讀 2808·2019-08-29 12:55
閱讀 1855·2019-08-26 13:55