2011-07-01 80 views
1

我有一個JPA + Hibernate實體,我需要通過RMI發送到不知道Hibernate的客戶端,所以我做了一個方法來「清理」Hibernate從中:從我的對象清洗休眠但不延遲加載

// shortened 
public class Player { 
    private Set<Item> ownedItems; 
    public void makeSerializable() { 
     ownedItems = new HashSet<Item>(ownedItems); 
    } 
} 

然而,當我打電話makeSerializable Hibernate嘗試延遲加載ownedItems如果它尚未加載,我不想要的,並且這也是不可能的,因爲有Hibernate會話。相反,如果ownedItems未加載,我想將其設置爲空或空集。

我該怎麼做?

回答

3
if (!Hibernate.isInitialized(ownedItems)) { 
    ownedItems = new HashSet<Item>(); 
} 

這是測試集合是否被初始化而不需要會話的方式。