2012-11-17 403 views
3

我正在用Jax-RS和GSON創建Web服務。現在,GSON無法轉換HibernateProxy對象,我有一些問題。我有一個API,以便我可以加載和延遲加載。當我想要重載時,我使用Hibernate.initialize(...)。但是,這似乎並不能保證一個對象是沒有問題的?unproxy Hibernate對象的優雅方式

那麼,哪裏,何時以及如何取消處理對象?當對象也可能與其他對象也有關係時,如何處理這個問題呢?

+0

你跟[這傢伙]工作(http://stackoverflow.com/questions/13432922/unproxy-hibernate-proxy-objects#comment18363348_13432922)?你有幾乎相同的問題。 – ElderMael

+1

另外,當您希望GSON轉換Hibernate代理時會拋出什麼異常? – ElderMael

+0

基本上重複的http://stackoverflow.com/questions/13459718/could-not-serialize-object-cause-of-hibernateproxy – Flavio

回答

2

這裏是一個示例代碼:

public <P> List<P> unproxy(Collection<P> objects) { 
    Session session = sessionFactory.getCurrentSession(); 
    List<P> result = new ArrayList<P>(); 
    for (P t : objects) { 
     Object unproxied = ((SessionImplementor)session).getPersistenceContext().unproxy(t); 
     result.add((P) unproxied); 
    } 
    return result; 
}