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

标签 java mongodb mongojack

我正在使用 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/

相关文章:

java - 默认处理程序上的存储错误

mongodb - 在 mongodb 投影中组合 $elemMatch 和 $

node.js - 嵌入式文档的 Mongoose 枚举验证

java - "com.fasterxml.jackson.databind.JsonMappingException: Expected type float, integer, or string."使用 ObjectMapper 转换 java.time.Instant

java - MongoJack 和 updateById 的使用

java - Java使用什么堆实现?

java - 如何将文件存储在我的 Android 模拟设备上,然后从我的程序中访问它?

ruby - 如何查询 Mongoid 正则表达式字段?

java - MongoJack 未找到对象

java - 当我单击标题时,没有显示首选项