gpt4 book ai didi

java - 找不到能够从类型 org.bson.BsonUndefined 转换的转换器

转载 作者:可可西里 更新时间:2023-11-01 10:42:20 31 4
gpt4 key购买 nike

我有 mongo 驱动程序 3.2.2,spring data mongodb 1.9.1.RELEASE。

Collection :

{
"_id": "5728a1a5abdb9c352cda6432",
"isDeleted": null,
"name": undefined
},
{
"_id": "5728a1a5abdb9c352cda6433",
"isDeleted": null,
"name": null
}

当我尝试使用 {"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:?]

如何解决?我有多种类型需要从 BsonUndefined 转换,例如 String、Date、PhoneNumber 等...

最佳答案

我在我的代码中遇到了这个完全相同的问题。我不知道为什么,但出于某种原因,新的 mongo-java-drivers 根本不喜欢在数据中有一个“空”值。如果您注意到当您保存一个对象并且值为 null 时,它实际上甚至没有将该字段放入文档中。

我们最终得到了 1 个由不同的“nodejs”应用程序编写但由 java 读取的集合。当我们将 mongo-java-driver 升级到 3.2 版本时,特定集合开始崩溃。

我们最终不得不对该集合中的所有记录进行类似于此的更新

db.columnDefinition.update({field: null}, {$unset: {field: 1}}, {multi: true})

一旦完全没有包含被映射到对象中的 bean 的“null”的记录,一切就会开始正常运行。

我们在集合中没有一个“未定义”,但我只能猜测它也会导致问题。

我们遇到了相同的 BsonUndefined 异常,即使问题与 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.3.1.RELEASE.jar:4.3.1.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:195) ~[spring-core-4.3.1.RELEASE.jar:4.3.1.RELEASE]
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:176) ~[spring-core-4.3.1.RELEASE.jar:4.3.1.RELEASE]

编辑:同样在我们的案例中,我们注意到它似乎并不总是一个问题。我们有其他的集合,我们可以直接访问它们,它们有“空”字段,可以很好地读取。它似乎与从 DBRef 样式中提取的任何内容有关。在我的例子中,报告有 DBRef 列,因此读取报告失败,因为该列中有一个字段为空。但是报告本身具有为空但不会中断的字段。

这是 spring-data 1.9.2,spring 4.3.1,mongo 3.2.2

关于java - 找不到能够从类型 org.bson.BsonUndefined 转换的转换器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37066690/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com