2つの解決策があります。 Hibernateは呼び出す
は、オブジェクトが変更されたかどうかを確認する方法に等しく、その前には、カスタムオブジェクトのコピーを取得するにはdeepCopyメソッドを呼び出します。したがって、deepCopyメソッドでは、カスタムオブジェクトの新しいコピーを作成し、equalsメソッドを正しく実装します。
第2の解決策は、AccessType.FIELDとAccessType.PROPERTYを組み合わせて使用しています。これは推奨されていませんが、それはあなたが知っているかどうかを確認することができます。
これは、以下のようにマッピングする必要があります。
@Entity @Table(名= TABLE_NAME)
@access(AccessType.FIELD)
パブリッククラスEntityClass {
/// ---いくつかのフィールド
@Column(name = "CustomCol")
@Type(type = "com.something。CustomColType ")
CustomClass customClass;
//
は - ゲッターsettters
}
あなたはウルのクラスにカスタムオブジェクトを持っていて、そのオブジェクトを変更する場合にのみ、それはとしてマークされません。解決方法1:他の属性をcustomClassオブジェクトで更新する 解決方法2:@Access(AccessType.PROPERTY)をcustomClassフィールドに置き、getter/setterを同じにします。 これはオーバーライドされます。クラスレベルに置くデフォルトのAccessType.Fieldの動作。
@Access(AccessType.PROPERTY)がクラスレベルの場合、この問題は再現できません。