我正在使用SpringData的MongoTemplate。我有一个成功保存到MongoDB的类。当我尝试使用find方法retrieve saved objects时,我得到了一个nosuchmethodexception,因为mongotemplate试图调用我的类中一个成员不存在的默认构造函数。
该成员没有默认构造函数,因为它是具有最终成员的最终类。有两个构造函数。第一个接受所有相关值作为参数。第二个接受map并有@jsoncreator注释,这使得jackson能够“很好地处理”这个类。
如何让MongoTemplate成功反序列化我的类?
有什么注释可以帮助你吗?
我可以通过MongoTemplate某种特殊的反序列化对象来处理相关的类吗?
我可以像jackson那样请求mongotemplate发送map参数吗?

最佳答案

如果您想使用非标准构造函数,实际上Spring Data MongoDB应该能够自动选择一个,但是如果在您的情况下没有发生这种情况(您可以共享更多的代码来澄清问题),您可以用@PersistenceConstructor来注释您的构造函数,显式地告诉您应该使用哪个构造函数。
对于完全不标准的内容,您可能需要为类创建自定义转换器。在Spring Data MongoDB reference中阅读更多内容

10-07 15:11