簡體   English   中英

如何從Hibernate中的session.load(E.class,id)獲取/初始化/取消代理數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM