日期:2014-05-20  浏览次数:20744 次

请教一个hibernate多重关系的经典问题!!
有三张表,大致内容如下:

BigType
bt_id|bt_name
  1 | 图书
SmallType
st_id|st_name|bt_id
  11 | 计算机 | 1
Goods
g_id|g_name_|st_id
 111| java | 11

我是hibernate配置文件是这样写的,大概内容:
BigType.hbm
XML code

<set name="stypes" order-by="st_id" lazy="false" inverse="true" cascade="all"> 
<key column="bt_id" />
<one-to-many class="com.joey.supershop.po.Stype"/>
</set>



SmallType.hbm
XML code
 
<set name="manygoods" order-by="id" lazy="false" inverse="true" cascade="all"> 
<key column="st_id" />
<one-to-many class="com.joey.supershop.po.Goods"/>
</set>



Goods.hbm
XML code

<many-to-one name="stype" column="st_id" lazy="false"/>



现在说我的问题:

我的程序在删除“图书”这个实体时,结果正常,其子类别“计算机”以及“计算机”下的“java” 都被删除。但是在删除“计算机”时出现异常“deleted object would be re-saved by cascade” 上网搜的答案都是两级关系的解决方法,请问各位有没有更好的办法?






------解决方案--------------------
探讨
引用:
当删除“计算机”的时候有连带关系的,所以要这么删除

计算机.get图书.getStypes.remove(计算机)

事务提交


感谢你的思路,经测试可行~ 但是能不能通过修改配置文件来达到目的呢? 十分感谢