是这样的我的两实体是多对多(many to many)的关系,比如两个类A 和 B ,现在我想对A操作,要能保存,能更新,能删除,关键的配置如下:
A的关键配置:
<set name="Bs" table="t_aTob" cascade="save-update,delete" inverse="false">
<key>
<column name="a_id"/>
</key>
<many-to-many column="b_id" class="B"/>
</set>
B的关键配置:
<set name="As" table="t_aTob" cascade="delete" inverse="false">
<key>
<column name="b_id"/>
</key>
<many-to-many column="A_id" class="A"/>
</set>添加的操作如下:
public String addA(int bIds[]) {
A a = new A();
Set<B> bs = new HashSet<B>();
for(Integer bId:bIds){
B b = new B();
B.setId(dirId);
dirs.add(dir);
}
role.setDirectorys(dirs);
dao.save(role);
return null;
}
运行的结果是:插入了一个A,却去update 了 n 次B,
我希望的是 保存的时候去插入A,同时也在中间表(t_aTob)中插入关联数据。
另外,更新用merge(A) 可以实现效果,删除 用delete(A)也可以实现效果,就差保存了,请问要如何配置才能实现我想要的 增删改 功能,谢谢
A的关键配置:
<set name="Bs" table="t_aTob" cascade="save-update,delete" inverse="false">
<key>
<column name="a_id"/>
</key>
<many-to-many column="b_id" class="B"/>
</set>
B的关键配置:
<set name="As" table="t_aTob" cascade="delete" inverse="false">
<key>
<column name="b_id"/>
</key>
<many-to-many column="A_id" class="A"/>
</set>添加的操作如下:
public String addA(int bIds[]) {
A a = new A();
Set<B> bs = new HashSet<B>();
for(Integer bId:bIds){
B b = new B();
B.setId(dirId);
dirs.add(dir);
}
role.setDirectorys(dirs);
dao.save(role);
return null;
}
运行的结果是:插入了一个A,却去update 了 n 次B,
我希望的是 保存的时候去插入A,同时也在中间表(t_aTob)中插入关联数据。
另外,更新用merge(A) 可以实现效果,删除 用delete(A)也可以实现效果,就差保存了,请问要如何配置才能实现我想要的 增删改 功能,谢谢
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货