如何序列化一个懒散获取的hibernate字段作为引用?
使用Jackson和Hibernate,我有一些惰性的字段。我希望它们由其id表示(类似于@JsonIdentityReference的效果),而不是嵌入整个对象或作为null 然而,我只能达到以下效果:如何序列化一个懒散获取的hibernate字段作为引用?,hibernate,jackson,spring-data-jpa,lazy-loading,Hibernate,Jackson,Spring Data Jpa,Lazy Loading,使用Jackson和Hibernate,我有一些惰性的字段。我希望它们由其id表示(类似于@JsonIdentityReference的效果),而不是嵌入整个对象或作为null 然而,我只能达到以下效果: 使用Jackson数据类型hibernate,惰性获取的字段被序列化为null,而我需要引用 使用@jsonidentialreference,并将fetchType更改为eager,我将字段序列化为id(reference)。然而,该字段被急切地获取,这是性能的一个缺点 我希望解决方案具有上
提前谢谢 我认为您可以扩展
Hibernate5Module
(Hibernate4Module
)并自己添加id
。
从代理获取id
public static Serializable getId(Object persistent) {
if (!(persistent instanceof HibernateProxy)) {
return null;
}
LazyInitializer initializer = ((HibernateProxy) persistent)
.getHibernateLazyInitializer();
return initializer.getIdentifier();
}
您是否尝试了
HibernateModule
的此功能以及FORCE\u LAZY\u 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
}
}
您必须使用上述配置在中注册。