1

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

我试图找到支持它的来源,但没有运气。谁能指出我支持的来源和/或让我知道我做错了什么?

干杯。

4

1 回答 1

2

当您配置您的 objectMapper 时,您还应该调用:

MongoJackModule.configure(objectMapper);

注册MongoAnnotationIntrospector来检测和解释@javax.persistance.Id注释。

于 2014-06-23T14:31:05.653 回答