[英]How to get / initialize / unproxy data from session.load(E.class, id) in Hibernate?
如何从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": {}
}
如果没有“取消代理”,您将收到错误消息
“ message”:“无法编写JSON:无法初始化代理[ *]-没有会话;嵌套的异常是com.fasterxml.jackson.databind.JsonMappingException:无法初始化代理[****]-没有会话(通过引用链:com。* .E $ HibernateProxy $ Zq7mcdJl [\\“ firstName \\”])“,
需要使用:
E el = Hibernate.unproxy(session.load(E.class, id), E.class);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.