hibernate 多对多只删除中间表数据

首先配置表的多对多映射 具体方法参见《深入浅出hibernate》 
下面列出删除中间表数据的方法 
role跟Program 是多对多关系 
Java代码   收藏代码
  1. Role role = get(roleId);   
  2.         for(Long programId : programIds){  
  3.             Program p = get(Program.class, programId);  
  4.             if(p != null){  
  5. //下面两句就是关键代码了 多对多的所有操作都必须同时操作两端的表,保存 更新 删除等都是如此   
  6.                 p.getRoles().remove(role);  //删除节目中对角色的引用  
  7.                 role.getPrograms().remove(p);//删除角色表对节目表的引用  
  8.             }  
  9.         }  
  10. save(role);  


下面是新增代码 
Java代码   收藏代码
  1. Role role = get(roleId);   
  2. for(Long programId : programIds){  
  3.             Program p = get(Program.class, programId);  
  4.             p.getRoles().add(role); //添加角色到节目的关联  
  5.             role.getPrograms().add(p);//  
  6.         }  
  7.         save(role);  

道理跟删除一样 
别忘了设置cascade="save-update"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值