我正在使用 MongoJack (2.0.0) 序列化/反序列化 MongoDB 中的对象。根据http://mongojack.org/index.html MongoJack应该支持@javax.persistance.Id。
我用@Id注释了对象变量
@Id
private String id;
当我尝试使用有效 ID 保存对象时
jacksonDBCollection.save(myEntity);
该对象将另存为新文档,而不是更新现有文档。
我确实使用自定义反序列化器,但我的模块中没有序列化器:
ObjectMapper objectMapper = new ObjectMapper();
SimpleModule module = new SimpleModule("MyModule", Version.unknownVersion());
module.addDeserializer(MyEntity.class, new MyEntityJsonDeserializer());
objectMapper.registerModule(module);
return objectMapper;
我调试了一些代码,发现在调用 jacksonDBCollection.save(myEntity) 时,id 被视为 String 而不是 ObjectId。看起来对 @javax.persistance.Id 的支持不起作用。
我试图找到支持此功能的来源,但没有成功。谁能向我指出支持此功能的来源和/或让我知道我做错了什么?
干杯。
最佳答案
当您配置 objectMapper 时,您还应该调用:
MongoJackModule.configure(objectMapper);
注册MongoAnnotationIntrospector它检测并解释 @javax.persistance.Id
注释。
关于java - MongoJack 支持 @javax.persistance.Id 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24304532/