1

hibernate 3.6.0.FINAL にアップグレードした後にエラーが発生しましたが、3.3.2.GA で動作していました

私の問題はhttps://forum.hibernate.org/viewtopic.php?p=2452617に似ています

その場合、問題を解決するために cascade="all" を設定しました。

しかし、私の場合、参照されたエンティティを更新したくありません。私は双方向の関係を持っていません。それは単なる多対1です。ここに投稿された同様の質問のほとんどは、カスケードをすべて実行することを提案していますが、私の場合はカスケードしたくありません。

私のマッピング

<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 の一時的なインスタンスがあると表示されます (エンティティを更新していませんが、新しく作成された MyUserDetail を逆シリアル化している間は BlazeDS である可能性があり、参照されている CodeMst エンティティをインスタンス化しています。 null 値、これが問題の原因である可能性がありますが、アップグレード前に同じコードが機能していました) これを解決するための助けをいただければ幸いです。

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 に答える