Hibernate多对多级联删除的问题
2015-10-11 16:22
363 查看
当数据库两个表是多对多关联关系的时候,维护者应该是数据量较少的一方。
即维护者inverse=false,被维护者inverse = true。
级联关系建议都是cascade= save-update。
下面代码中,Project负责维护Employee的更新。
删除维护者的时候可以直接delete。
删除被维护者的时候,需要逐个解除实体表与联系表的关系,即解除外键约束,<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>
即维护者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>
相关文章推荐
- Terminal开启自动补全功能
- Android实现组合键监听功能
- 信息安全系统设计基础第四周笔记
- 自定义NSLog
- C++中#define用法
- 覆盖你 80 % 网络生活的,竟是这样一家神秘实验室
- 子类会自动调用父类的无参构造函数
- Shell角本:在每月最后二天执行指定命令
- 一张图片,让你彻底清除线程的生命周期
- mybatis10 实现类代理对象开发
- C#自定义特性和反射
- iTween.MoveTo用法
- tcp 客户、服务器程序示例
- Hadoop图像压缩
- 新秀系列C/C++经典问题(六)
- git
- Java学习——String变量中的双胞胎
- ASP.NET MVC 处理404与500错误页面的方法
- Java I/O
- CodeForces 558C(位运算)