1

升级到休眠 3.6.0.FINAL 后出现错误,但它正在使用 3.3.2.GA

我的问题类似于https://forum.hibernate.org/viewtopic.php?p=2452617

在这种情况下,他们设置了 cascade="all" 来解决问题。

但就我而言,我不想更新引用的实体。我没有双向关系,它只是多对一。此处发布的大多数类似问题都建议全部进行级联,但就我而言,它不想级联。

我的映射

<class name="org.hmil.ams.com.model.MyUserDetails" table="CMUPMST_TB">
        <id name="username" column="UPMST_USER_NAME" type="java.lang.String"
            unsaved-value="0">
            <generator class="assigned" />
        </id>
        <property name="password" column="UPMST_USER_PWD" type="java.lang.String"
            not-null="true" />
        <property name="UPMST_ROLE_ID" type="long" not-null="true" />

        <many-to-one name="UPMST_ROLE" fetch="join" cascade="none"
            insert="false" update="false"         class="org.hmil.ams.setup.model.CodeMst">
            <column name="UPMST_ROLE_ID" />
        </many-to-one>
</class>

我正在使用 Spring BlazeDS/flex,我的对象已分离。现在,当我尝试保存新创建的 MyUserDetails 实体时,它说存在 CodeMst 的瞬态实例,(我没有更新实体,但可能是 BlazeDS,而它在反序列化新创建的 MyUserDetail 时,它正在实例化引用的 CodeMst 实体,使用空值,这可能会导致问题,但相同的代码在升级之前工作)任何帮助解决这个问题表示赞赏。

4

1 回答 1

1

我实际上在这里找到了解决方案: https ://hibernate.atlassian.net/browse/HHH-5908

部署补丁。我刚刚为 TypeHelper.findDirty 方法添加了相同的修复(第 287 行)

OLD: final boolean[][] includeColumns,
NEW: final boolean[] includeProperties, final boolean[][] includeColumns,

然后在 AbstractEntityPersister.findDirty 中(第 3408 行):

OLD: propertyColumnUpdateable,
NEW: getPropertyUpdateability(), propertyColumnUpdateable,

更新: 打破这个的休眠修复是https://hibernate.atlassian.net/browse/HHH-2350

于 2013-12-18T16:50:59.643 回答