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

整了一下午终于有点苗头了
赶紧写下来
首先配置表的多对多映射 具体方法参见《深入浅出hibernate》
下面列出删除中间表数据的方法
role跟Program 是多对多关系
Role role = get(roleId); 
for(Long programId : programIds){
Program p = get(Program.class, programId);
if(p != null){
//下面两句就是关键代码了 多对多的所有操作都必须同时操作两端的表,保存 更新 删除等都是如此
p.getRoles().remove(role); //删除节目中对角色的引用
role.getPrograms().remove(p);//删除角色表对节目表的引用
}
}
save(role);


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

道理跟删除一样
别忘了设置cascade="save-update"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值