您的位置:首页 > 其它

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

2013-08-09 09:40 190 查看
首先配置表的多对多映射 具体方法参见《深入浅出hibernate》

下面列出删除中间表数据的方法

role跟Program 是多对多关系

Java代码


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);

下面是新增代码

Java代码


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"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: