Spring Data MongoDBを使用すると、次のインスタンスが取得されます:org.springframework.data.mongodb.core.convert.MappingMongoConverter
mapKeyDotReplacement
があります デフォルトではnullに設定されているため、例外が発生します。
org.springframework.data.mongodb.core.convert.MappingMongoConverter
の独自のインスタンスを作成する必要があります または、プロバイダーセッターメソッドを使用して既存のインスタンスを変更するだけです:
/**
* Configure the characters dots potentially contained in a {@link Map} shall be replaced with. By default we don't do
* any translation but rather reject a {@link Map} with keys containing dots causing the conversion for the entire
* object to fail. If further customization of the translation is needed, have a look at
* {@link #potentiallyEscapeMapKey(String)} as well as {@link #potentiallyUnescapeMapKey(String)}.
*
* @param mapKeyDotReplacement the mapKeyDotReplacement to set
*/
public void setMapKeyDotReplacement(String mapKeyDotReplacement) {
this.mapKeyDotReplacement = mapKeyDotReplacement;
}
MongoDBでは、ドットは常に特殊文字として扱われるため、ドットを回避すると、将来的に他の頭痛の種を減らすことができます。
編集:デフォルトのMappingMongoConverter
を上書きするには 次のBean宣言を追加します。
@Bean
public MappingMongoConverter mongoConverter(MongoDbFactory mongoFactory) throws Exception {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoFactory);
MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
mongoConverter.setMapKeyDotReplacement(".");
return mongoConverter;
}