MongoJack支持@ javax.persistance.Id不起作用

时间:2014-06-19 10:36:04

标签: java mongodb mongojack

我正在使用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的支持不起作用。

我试图找到支持这个但没有运气的来源。任何人都可以指出支持这一点的来源和/或让我知道我做错了什么?

干杯。

1 个答案:

答案 0 :(得分:2)

配置objectMapper时,还应调用:

MongoJackModule.configure(objectMapper);

注册MongoAnnotationIntrospector,用于检测和解释@javax.persistance.Id注释。