如何从Hibernate中的session.load(E.class,id)获取/初始化/取消代理数据?

时间:2019-07-30 14:08:52

标签: java 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": {}
}

1 个答案:

答案 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);
相关问题