Hibernate多对多级联删除的问题

当数据库两个表是多对多关联关系的时候,维护者应该是数据量较少的一方。

即维护者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>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值