您的位置:首页 > 其它

Hibernate多对多级联删除的问题

2015-10-11 16:22 363 查看
当数据库两个表是多对多关联关系的时候,维护者应该是数据量较少的一方。

即维护者inverse=false,被维护者inverse = true。

级联关系建议都是cascade= save-update。

下面代码中,Project负责维护Employee的更新。

删除维护者的时候可以直接delete。

<span style="color:#993399;"> Transaction tx = null;
Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();
tx = session.beginTransaction();
</span><pre name="code" class="java"><span style="font-size:18px;"><span style="color:#993399;"><span style="color:#009900;"></span></span></span><pre name="code" class="java">                       Project project= session.get(Project.class,id);

session.delete(project);
tx.commit();




删除被维护者的时候,需要逐个解除实体表与联系表的关系,即解除外键约束,<span style="font-size:18px;"> <span style="color:#993399;">Transaction tx = null;
Session session = HibernateSessionFactory.getSessionFactory().getCurrentSession();
tx = session.beginTransaction();
Employee employee = session.get(Employee.class,id);

<span style="color:#009900;">Set<Project>projects = employee.getProjects();
for(Project project : projects){
project.getEmployees().remove(employee);
}</span>
session.delete(employee);
tx.commit();
</span>
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: