Dip*_*ani 5 java mongodb spring-data-mongodb
我有 mongo 驱动程序 3.2.2,spring 数据 mongodb 1.9.1.RELEASE。
收藏 :
{
"_id": "5728a1a5abdb9c352cda6432",
"isDeleted": null,
"name": undefined
},
{
"_id": "5728a1a5abdb9c352cda6433",
"isDeleted": null,
"name": null
}
Run Code Online (Sandbox Code Playgroud)
当我尝试获取记录时,出现{"name":undefined}以下异常。
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type org.bson.BsonUndefined to type java.lang.String
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:313) ~[spring-core-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:195) ~[spring-core-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:176) ~[spring-core-4.1.7.RELEASE.jar:4.1.7.RELEASE]
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.getPotentiallyConvertedSimpleRead(MappingMongoConverter.java:821) ~[spring-data-mongodb-1.7.1.RELEASE.jar:?]
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?我有多种类型需要从 BsonUndefined 转换,如字符串、日期、电话号码等......
我们最近遇到了这个问题,所以我将我的研究结果放在这里,以防其他人也遇到这个问题。
这是 Spring Data MongoDB 中的一个已知错误:
https://jira.spring.io/browse/DATAMONGO-1439
该链接的解决方法是添加一个显式转换器,用于从 转换BsonUndefined为null。例如,使用 Java 8:
@ReadingConverter
public class BsonUndefinedToNullObjectConverterFactory implements ConverterFactory<BsonUndefined, Object> {
@Override
public <T extends Object> Converter<BsonUndefined, T> getConverter(Class<T> targetType) {
return o -> null;
}
}
Run Code Online (Sandbox Code Playgroud)
没有 Lambda(Java 8 之前的版本):
@ReadingConverter
public class BsonUndefinedToNullObjectConverterFactory implements ConverterFactory<BsonUndefined, Object> {
@Override
public <T extends Object> Converter<BsonUndefined, T> getConverter(Class<T> targetType) {
return new Converter<BsonUndefined, T>() {
@Override
public T convert(BsonUndefined source) {
return null;
}
};
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11832 次 |
| 最近记录: |