在我的GWT應用程序中,我將一個對象傳遞給服務器以便與Hibernate保持一致。該對象包含另一個對象的列表。列表中的每個元素都包含一個Map,它是另一個Hibernate表。更新包含休眠列表的對象
爲了做到這一點的交易,這是我的理解是,我必須首先:
- 進行查找通過 休眠
- 獲得來自數據庫的持久化對象修改對象
- 更新通過Hibernate的
這裏的對象是我在做什麼一些快速代碼:
public void saveOrUpdateObject(final Foo foo)
{
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
Object lookup = myDAO.getObject(foo.getUniqueValue());
if (lookup != null) {
lookup.getList().clear();
lookup.addAll(foo.getList());
myDAO.update(lookup);
}
else {
myDAO.save(foo);
}
}
使用這種方法,我偶爾會屬於HibernateException:
org.hibernate.HibernateException: A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: my.Foo.list
什麼是更新包含使用Hibernate的集合對象的正確方法?