我目前正在尝试解决一个问题,即我在 Java Swing 应用程序中使用 Hibernate 4,同时实体之间存在多个多对多关系。
例如,Project 实体与Person 有关系。 Person 和Project 是多对多的关系。一个项目可以属于多个类别,因此也存在多对多关系。
Person *-----* Project *-----* Category
当我有一个 swing 表单时,我可以在其中编辑有关Person、Project 和 Category 的所有信息当用户点击“保存”按钮时保存人物,保存/更新人物的可能解决方案是什么?
void savePerson(Person p){
Session sess = factory.openSession();
Transaction tx = null;
try {
tx = sess.beginTransaction();
// steps to be done
tx.commit();
}
catch (RuntimeException e) {
if (tx != null) tx.rollback();
}
finally {
sess.close();
}
}
因为 Person 中还有一个 collection Projects 和一个 collection Project 中的 Categoy 可能已更改,我是否必须进行递归类型的保存(首先保存/更新所有子-集合包含的实体,然后保存/更新 Person 实体)或者我是否只需要保存 Person 实体,Hibernate 将保存/更新机制应用于以 Person 为根的整个实体树?有什么最佳做法吗?
最佳答案
看看CascadeType
.您可以使用关系注释中的 CascadeType 直接设置保存/更新操作的行为:
@OneToMany(cascade = CascadeType.ALL)
关于java - 保存/更新具有多对多关系的 Hibernate 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9249374/