使用多对多关系保存/更新Hibernate实体

时间:2012-02-12 14:02:48

标签: java hibernate save

我目前正在尝试解决一个问题,我在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为根的整个实体树?任何最佳做法?

1 个答案:

答案 0 :(得分:2)

看看CascadeType。您可以使用关系注释中的CascadeType直接设置保存/更新操作的行为:

@OneToMany(cascade = CascadeType.ALL)