读书人

请问一个hibernate多重关系的经典有关

发布时间: 2012-04-12 15:46:35 作者: rapoo

请教一个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(计算机)

事务提交


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

读书人网 >J2EE开发

热点推荐