简体   繁体   English

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

[英]How to get / initialize / unproxy data from session.load(E.class, id) in Hibernate?

How to get / initialize / unproxy data from session.load(E.class, id) in Hibernate?? 如何从Hibernate中的session.load(E.class, id)获取/初始化/取消代理数据? No (eg @OneToMany or @ManyToMany ...) 否(例如@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": {}
}

if no "unproxy" you will get error 如果没有“取消代理”,您将收到错误消息

"message": "Could not write JSON: could not initialize proxy [ *] - no Session; nested exception is com.fasterxml.jackson.databind.JsonMappingException: could not initialize proxy [****] - no Session (through reference chain: com.* .E$HibernateProxy$Zq7mcdJl[\\"firstName\\"])", “ message”:“无法编写JSON:无法初始化代理[ *]-没有会话;嵌套的异常是com.fasterxml.jackson.databind.JsonMappingException:无法初始化代理[****]-没有会话(通过引用链:com。* .E $ HibernateProxy $ Zq7mcdJl [\\“ firstName \\”])“,

Need use: 需要使用:

E el =  Hibernate.unproxy(session.load(E.class, id), E.class);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM