如何在Hibernate中从session.load(E.class, id)
获取/初始化/取消代理数据?
否(例如@OneToMany
或@ManyToMany
...)
Hibernate.initialize(el) return new property "hibernateLazyInitializer": {}
try (Session session = sessionFactory.openSession()) {
session.beginTransaction();
final Employee el = session.load(E.class, id);//Could not write JSON: could not initialize proxy
Hibernate.initialize(el);
Employee el2 = Hibernate.unproxy(el, E.class); // "hibernateLazyInitializer": {}
session.getTransaction().commit();
return el; //"hibernateLazyInitializer": {}
}
答案 0 :(得分:0)
如果没有“取消代理”,您将收到错误消息
“ message”:“无法编写JSON:无法初始化代理[ *]-无会话;嵌套异常为com.fasterxml.jackson.databind.JsonMappingException:无法初始化代理[****] -无会话(通过参考链:com。* 。E$ HibernateProxy $ Zq7mcdJl [\“ firstName \”])“,
需要使用:
E el = Hibernate.unproxy(session.load(E.class, id), E.class);