您的位置:首页 > 其它

hibernate多对多删除被控方时出现异常解决

2009-11-27 13:44 375 查看
ProuductItem 和 OtmsCharge是多对多关系,OtmsCharge是主控方。

主要的映射代码如下

ProductItem:

<set name="charges" table="ChargeDetail" inverse="true">
<key column="productItem"></key>
<many-to-many column="chargeId" class="com.xycentre.otms.usermanager.model.OtmsCharge"></many-to-many>
</set>


OtmsCharge:

<set name="productItems" table="ChargeDetail">
<key column="chargeId"/>
<many-to-many column="productItem" class="com.xycentre.otms.model.ProductItem"></many-to-many>
</set>


直接删除ProductItem会发生异常,正确的删除方法是:

public void unbindProductItem(Long piId){
if(piId < 0)return;
Object piObj = this.getHibernateTemplate().get(ProductItem.class, piId);
if(piObj != null && piObj instanceof ProductItem){
ProductItem pi = (ProductItem)piObj;
Set<OtmsCharge> charges = pi.getCharges();
for(OtmsCharge charge : charges){
charge.getProductItems().remove(pi);
}
this.getHibernateTemplate().delete(pi);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐