我有一个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
,我想将其设置为null或空集。
我该怎么做?
答案 0 :(得分:3)
if (!Hibernate.isInitialized(ownedItems)) {
ownedItems = new HashSet<Item>();
}
这是测试是否在不需要会话的情况下初始化集合的方法。