Hibernate级联删除的一个错误

酒店和参照物是一对多的关系:

 

        <set name="tbBuildings" inverse="false" cascade="all-delete-orphan">
            <key>
                <column name="hotel_id" not-null="true" />
            </key>
            <one-to-many class="com.TbBuilding" />
        </set>

 

 

删除某个酒店时,应该级联删除掉与它关联的参照物。

 

删除的时候,报出了错误,如下:

 

java.sql.BatchUpdateException: Column 'hotel_id' cannot be null

因为Hibernate在删除参照物前会先执行如下一条语句:

update clientmanager.tb_building set hotel_id=null where hotel_id=?
这样,由于参照物中酒店id的外不能为空,所以报出了错误。

 

 

解的办法:

将上面的inverse="false" 改为inverse="true" , 如此,则不会报错了。

因为这样设置后,不再执行这一条更新的语句,而是直接执行删除语句。

即:不会在删除前先把参照物的hotel_id设为null值,而是直接删除参照物。

 

 

 

 

posted on 2009-06-16 16:50  台哥编程课堂  阅读(419)  评论(0编辑  收藏  举报

导航