我正在使用Spring数据的MongoTemplate.我有一个班级已成功保存到mongoDB.当我尝试使用find方法检索保存的对象时,出现了NoSuchMethodException异常,因为MongoTemplate试图调用类的成员之一的不存在的默认构造函数.
该成员没有默认构造函数,因为它是具有最终成员的最终类.有两个构造函数.第一个接受所有相关值作为参数.第二个接受Map并具有@JsonCreator批注,这使Jackson可以在此类中“玩得开心”.
如何获得MongoTemplate来成功反序列化我的课程?
是否有某种可以帮助您的注释?
我可以通过MongoTemplate某种特殊的反序列化对象来处理相关的类吗?
我可以像Jackson一样要求MongoTemplate将参数作为Map发送吗?
解决方法:
如果您想使用非标准的构造函数,则实际上Spring Data MongoDB应该能够自动选择一个,但是如果您的情况没有发生(您可以共享更多代码以使事情变得清楚),则可以为构造函数添加@PersistenceConstructor注释.明确指出应使用哪个构造函数.
对于完全不标准的内容,您可能需要为您的课程创建自定义转换器.阅读更多Spring Data MongoDB reference