2

Hibernateアノテーションについてサポートが必要です。

私は次の2つのエンティティを持っています:

public class Custom {
 private Map<KeyObject, ValueObject> properties;

 @oneToMany(mappedBy = "customId", cascade = CascadeType.All)
 @MapKey(name = "keyObject")
 public Map<KeyObject, ValueObject> getProperties();

.....
}

public class ValueObject {
 private KeyObject keyObject;
 private Long customId;
 private String value;

...getters and setters
}

レコードを保存、更新、選択、および削除するための単純なdaoクラスがあります。

Customオブジェクトのマップからレコードを削除してからcustomDao.save(custom)を呼び出すと、変更がデータベースに保持されることはありません。エラーもスローしていません。

Hibernateの例で、KeyValueテーブルでcustomIdをLongではなくCustomオブジェクトとして定義できることを確認しましたが、これは行いたくありませんでした。

エンティティを正しく設定していませんか?

4

1 に答える 1

4

アソシエーションにmappedBy属性がある場合、それは次のことを意味します。私はこのアソシエーションの所有者ではありません。アソシエーションのこちら側に加えられた変更は、Hibernateにとって重要ではありません。重要なのは協会の反対側です。

Hibernateが反対側にタイプのManyToOneを必要とすることを期待していたので、これが機能することにも驚いていCustomます。ただし、KeyValue/ValueObjectでcustom/customIdフィールドをnullに設定しない場合、Hibernateはこの列をnullに設定しないことは確かです。

于 2012-06-06T17:02:14.337 に答える