我正在使用MongoJack(2.0.0)来序列化/反序列化MongoDB中的对象。根据{{3}},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的支持不起作用。
我试图找到支持这个但没有运气的来源。任何人都可以指出支持这一点的来源和/或让我知道我做错了什么?
干杯。
答案 0 :(得分:2)
配置objectMapper时,还应调用:
MongoJackModule.configure(objectMapper);
注册MongoAnnotationIntrospector,用于检测和解释@javax.persistance.Id
注释。