当前位置: 首页 > 知识库问答 >
问题:

MongoJava驱动程序3.6:更改流编解码器错误

方斌
2023-03-14

我正在尝试使用MongoJava驱动程序3.6的新更改流功能,但我卡住了。这是我的错误:

ChangeStreamDocument contains generic types that have not been specialised.
Top level classes with generic types are not supported by the PojoCodec.

下面是我启动changeStream的方法:

CodecRegistry pojoCodecRegistry = fromRegistries(MongoClient.getDefaultCodecRegistry(),
        fromProviders(PojoCodecProvider.builder().automatic(true).build()));

MongoDatabase database = mongoClient.getDatabase(mongoClientURI.getDatabase())
                                    .withCodecRegistry(pojoCodecRegistry);

collection.insertOne(Person.builder().age(100).build());
collection.insertOne(Person.builder().age(100).build());
collection.watch().forEach((Block<? super ChangeStreamDocument<Person>>) personChangeStreamDocument -> {
    System.out.println(personChangeStreamDocument.getFullDocument());
});

< code>Person只是一个POJO。

共有1个答案

督嘉言
2023-03-14

JAVA-2800中描述的自动< code > projocodeprovider 目前有一个错误。

临时解决方法是手动注册 POJO 类,例如:

CodecRegistry pojoCodecRegistry = fromRegistries(MongoClient.getDefaultCodecRegistry(),
                                 fromProviders(PojoCodecProvider.builder().register(Person.class).build())); 

此外,请注意,如果在打开集合上的更改流之前执行了插入操作,您可能看不到事件插入。尽管您可以通过从另一个线程或进程插入/修改文档来轻松测试这一点。请参见更改流了解详情。

更新:票证JAVA-2800已解决,MongoDB Java驱动程序v3.6.4上提供了修复版本。

 类似资料:
  • 我正在尝试使用selenium在pycharm中键入我的第一个GUI测试。 我通过cmd raport安装了selenium: C: 然后我用pycharm编写了一些代码: 这就是当我点击开始时发生的事情: 文件“C:/Users/Admin/PycharmProjects/untitled/venv/test.py”,第3行driver=webdriver.Chrome(“C:\Users\Ad

  • 我正试图在eclipse中运行我的第一个webdriver脚本。使用jre1。8.0_1111. 我使用了下面的代码,但它显示了错误。请帮我查一下密码。 错误堆栈 线程“main”java中出现异常。lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver设置。壁虎。驱动系统属性;有关更多信息,请参阅github。com/mozilla/geckodr

  • scala-mongo-driver有一个处理case类的很好的文档。http://mongodb.github.io/mongo-scala-driver/2.3/getting-start/quick-tour-case-classs/。在当前情况下,我的case类字段是option[T]值。因此值可以是或。默认编解码器现在将“none”值序列化为null。但如果键的值为none,我想排除它。

  • DataStax驱动程序Cassandra版本:3.3.2 Scala版本:2.12.4 我正在为Cassandra的datastax java驱动程序中的mappingmanager创建一个scala包装器。 null 为什么它总是从Scala.Collection.Mutable.ArrayBuffer“转换”?解决这个问题的方法是什么?

  • 我试图编译odbc驱动程序,但我有以下错误: 我运行以下命令: 我的Ignite版本是2.5下载者(在01.03.2018): 请帮帮我.

  • 3.6. 编写程序 以file.go代码为例,用以下命令编译: $ 6g file.go 6g是针对amd64指令的编译器,它的输出文件为 file.6。其中 ‘6’ 表示文件是 amd64指令的输出文件。 如果是386和arm 处理器,后缀则为 8 和 5。 也就是说,如果你用的是386处理器,那么应该用8g命令编译, 输出的文件为file.8。 然后用以下命令连接: $ 6l fil