Java 从我的对象中清除Hibernate,但不要';t惰性负载
我有一个JPA+Hibernate实体,我需要通过RMI发送到一个不知道Hibernate的客户机,所以我制作了一个方法来“清理”Hibernate:Java 从我的对象中清除Hibernate,但不要';t惰性负载,java,hibernate,serialization,lazy-loading,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); } }
// shortened
public class Player {
private Set<Item> ownedItems;
public void makeSerializable() {
ownedItems = new HashSet<Item>(ownedItems);
}
}
//缩短
公开课选手{
私人设置自己的编辑;
public void makeSerializable(){
ownedItems=新哈希集(ownedItems);
}
}
但是,当我调用makeSerializable
Hibernate时,如果尚未加载ownedItems
,Hibernate将尝试延迟加载它,这是我不希望的,因为存在Hibernate会话,这也是不可能的。相反,如果未加载ownedItems
,我希望将其设置为null或空集
如果(!Hibernate.isInitialized(ownedItems))我怎么做{
if (!Hibernate.isInitialized(ownedItems)) {
ownedItems = new HashSet<Item>();
}
ownedItems=newhashset();
}
这是一种测试集合是否在不需要会话的情况下初始化的方法