2010-06-02 70 views
3

我遇到了幾個實例,其中採用POJO做代理休眠bean的一些工作的框架。休眠懶惰加載代理與其他框架不兼容

例如,如果我xml的註釋爲框架X豆並將其傳遞到框架X不承認豆,因爲它是通過代理對象 - 這對於框架X.沒有註釋

有這是一個常見的解決方案?我不希望將bean定義爲渴望加載,或者在應用程序中的任何地方進行延遲加載。

回答

5

可以圍繞傳遞之前,unproxy對象:

public static <T> T initializeAndUnproxy(T var) { 
    if (var == null) { 
     throw new IllegalArgumentException("passed argument is null"); 
    } 

    Hibernate.initialize(var); 
    if (var instanceof HibernateProxy) { 
     var = (T) ((HibernateProxy) var).getHibernateLazyInitializer() 
       .getImplementation(); 
    } 
    return var; 
} 
+0

感謝。我想最好的解決方案是在任何框架獲得它之前將此代碼插入到攔截器中。 – bowsie 2010-06-03 12:15:42

+0

重用,如此強制+1 – 2010-09-24 14:44:36