Khi sử dụng Spring Data MongoDB, bạn nhận được một phiên bản của:org.springframework.data.mongodb.core.convert.MappingMongoConverter
có mapKeyDotReplacement
được đặt thành null theo mặc định - đó là lý do tại sao bạn nhận được một ngoại lệ.
Bạn cần tạo phiên bản org.springframework.data.mongodb.core.convert.MappingMongoConverter
của riêng mình. hoặc chỉ sửa đổi phiên bản hiện có bằng cách sử dụng phương thức trình thiết lập trình cung cấp của nó:
/**
* 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;
}
Trong MongoDB, dấu chấm luôn được coi là một ký tự đặc biệt nên việc tránh nó rất có thể sẽ giúp bạn đỡ đau đầu hơn trong tương lai.
CHỈNH SỬA:Để ghi đè MappingMongoConverter
mặc định thêm khai báo bean sau:
@Bean
public MappingMongoConverter mongoConverter(MongoDbFactory mongoFactory) throws Exception {
DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoFactory);
MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
mongoConverter.setMapKeyDotReplacement(".");
return mongoConverter;
}