从我的对象清理Hibernate,但不要延迟加载

时间:2011-07-01 10:02:23

标签: java hibernate serialization lazy-loading

我有一个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或空集。

我该怎么做?

1 个答案:

答案 0 :(得分:3)

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

这是测试是否在不需要会话的情况下初始化集合的方法。