【问题标题】:Cleanse Hibernate from my object but don't lazy load从我的对象中清除 Hibernate 但不要延迟加载
【发布时间】:2011-07-01 10:02:23
【问题描述】:

我有一个 JPA+Hibernate 实体,我需要通过 RMI 将它发送给不了解 Hibernate 的客户端,因此我制定了一种方法来“清除”Hibernate:

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

但是,当我调用 makeSerializable 时,如果 ownedItems 尚未加载,Hibernate 将尝试延迟加载,这是我不想要的,这也是不可能的,因为存在 Hibernate 会话。相反,如果 ownedItems 未加载,我想将其设置为 null 或空集。

我该怎么做?

【问题讨论】:

    标签: java hibernate serialization lazy-loading


    【解决方案1】:
    if (!Hibernate.isInitialized(ownedItems)) {
        ownedItems = new HashSet<Item>();
    }
    

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

    【讨论】:

      猜你喜欢
      • 2013-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-27
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      相关资源
      最近更新 更多