java - Bson 找不到编解码器

标签 java mongodb mongodb-java quarkus

我正在使用 Quarkus 构建一个 Web 服务,该服务接收输入、对其进行处理并将一些结果作为对象存储到 MongoDB 中。然而,它向我抛出了一个关于“Bson 无法找到编解码器”的错误。我相信这应该与我的对象的构造方式有关。

我的对象的示例属性:

public class ResultsResponse{
    //Job id for tracking if using db to store
    private String jobId;
    private Boolean matched;
    private long timeElapsedInMillis;
    private String source1;
    private String source2;
    private Double absoluteTolerance;
    private Integer maxResultsLimit;
    private List<List<String>> missingRows;
    private List<String> headers;
    private List<List<String>> acceptableRows;

从我所做的谷歌搜索来看,我相信这是因为 Bson 无法映射 List<List<String>转换为 mongodb 数据类型。我还关注了 quarkus 文档 here创建自定义编解码器提供程序,但我不太明白我到底可以如何做到这一点。

感谢任何人能够提供任何意见,并在需要时随时询问更多信息。谢谢你!

最佳答案

我在使用 PanacheMongo 时遇到了同样的问题。对我来说,解决方案是将这些字段公开。华丽需要公共(public)领域。

通过定义 getter/setter,您可以确保封装:

“感谢我们的字段访问重写,当您的用户读取 person.name 时,他们实际上会调用您的 getName() 访问器,对于字段写入和 setter 也是如此。这允许在运行时进行正确的封装,因为所有字段调用都会被相应的 getter/setter 调用替换。”

参见https://quarkus.io/guides/mongodb-panache欲了解更多信息

如果你不使用 MongoPanache 你可以忽略我。或者也许它也修复了普通 mongo 的问题。

关于java - Bson 找不到编解码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60647225/

相关文章:

java - 在我的事务中获取 org.hibernate.NonUniqueObjectException

javascript - 将新集合添加到现有 mongo 数据库

java - Spring mongo聚合按日期范围获取计数和日期

java - 我需要导入什么包才能在 Java 中编译 Jackson mongodb DBquery 函数?

java - 解析java结果137

java - Log4j2 api在OSGi环境下找不到Log4j2核心

java - 将 JavaFX 菜单项文本居中对齐

java - 是否可以静态区分完全限定名称和嵌套类类型?

Mongodb 错误失败 24 : Too many open files : Using pymongo

mongodb - 没有索引的MongoDB搜索真的很慢吗?