我目前正在尝试解决一个问题,我在Java Swing应用程序中使用Hibernate 4,同时在实体之间有多个多对多关系。
例如, Project 实体与 Person 有关系。 人和项目有很多关系。 项目可以在许多 Categories 中,因此也存在多对多关系。
Person *-----* Project *-----* Category
当我有一个摆动表格,我可以编辑所有关于人,项目和类别的信息时,它会出现在当用户点击" save"时保存 Person 按钮,什么是保存/更新人的可能解决方案?
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 中的项目还有 集合 分类在 Project 中可能已更改的 ,我是否必须执行递归类型的保存(首先保存/更新所有子 - 集合包含然后保存/更新Person实体的实体)或者我是否必须仅保存Person实体,Hibernate将保存/更新机制应用于以Person为根的整个实体树?任何最佳做法?
答案 0 :(得分:2)
看看CascadeType
。您可以使用关系注释中的CascadeType直接设置保存/更新操作的行为:
@OneToMany(cascade = CascadeType.ALL)