使用Jackson和Hibernate,我有一些懒惰的字段。我想让它们用它的id表示(类似于@JsonIdentityReference的效果),而不是嵌入整个对象或者为null。
但是,我只能达到以下效果:
我想拥有具有以上两种情况优势的解决方案:该字段是延迟获取的,因此除非需要,否则无需查询数据库。生成的Json对象中包含一个id引用,因此客户端可以发出单独的查询以获取带引用的实体。
我的意图类似于spring数据休息所做的事情:同一聚合根中的实体嵌入在聚合根中。与其他聚合根的关系表示为链接。
提前致谢!
答案 0 :(得分:2)
除了HibernateModule
之外,您是否尝试将FORCE_LAZY_LOADING
的此功能设为false?:
hibernateModule.configure(Feature.FORCE_LAZY_LOADING, false);
hibernateModule.configure(Feature.SERIALIZE_IDENTIFIER_FOR_LAZY_NOT_LOADED_OBJECTS, true);
未初始化代理的输出如下:
{
"somefield" : "value",
"link": {
"id" = idValue
}
}
答案 1 :(得分:0)
我认为你可以扩展VectorKit
(Hibernate5Module
)并自己添加Hibernate4Module
。
从代理
id
id