首页 > 解决方案 > 休眠保存抛出错误:BL错误:批量更新从更新[0]返回了意外的行数;实际行数:0;预期:1

问题描述

我有一对一类型的父子关系

父类 hbm.xml Pipeline_Facility_Id_Seq

    <many-to-one name="pipelineData" class="com.db.loud.dto.gctpipeline.PipelineData" column="LOAN_ID"  not-null="true"/>
    <one-to-one name="shippingFacilityAsset" class="xxx.ShippingFacilityAsset" cascade="all"/>

子 hbm.xml

<class name="com.db.loud.dto.gctpipeline.ShippingFacilityAsset" table="Shipping_Facility_Asset" >
    <id name="facilityId" type="long">
        <column name="FACILITY_ID" not-null="true" sql-type="NUMBER" />
        <generator class="foreign">
            <param name="property">pipelineFacility</param>
        </generator>
    </id>

    <one-to-one name="pipelineFacility" class="com.db.loud.dto.gctpipeline.PipelineFacility" constrained="true"/>

现在更新它时抛出错误“BL错误:批量更新从更新[0]返回了意外的行数;实际行数:0;预期:1”

因为它没有在 child 中找到要更新的行,这是真的。所以这个错误是预期的。

这是我们可能正在更新表中不存在子对象的对象的业务案例?

我该如何解决?

我需要插入子实体+更新父实体,其中父记录已存在于主表中,而子表中缺少子记录。

标签: hibernate

解决方案


将 dynamic-update="true" 添加到休眠映射 xml 对我有用


推荐阅读