2011-07-27 11 views
2

アイテムとプロパティの2つのテーブルがあり、1つのアイテムが複数のプロパティを持つことができます。私はそれを正しく(私は思う)ハイバネートでモデル化して、ItemModelオブジェクトをロードすると、すべてのプロパティが適切に読み込まれます。休止状態の一対多関係が正しく更新されない

問題は、プロパティを削除して保存しようとしているときに、プロパティが既存のプロパティに追加されるだけです。

ItemModel m = ...; 
m.getPropertySet().size() // returns 5 initially 
m.getPropertySet().clear(); 
// some update function which adds properties 
m.getPropertySet().size(); // returns 1 
...currentSession().saveOrUpdate(m); 

現在、データベースには1ではなくそのカテゴリのプロパティが6つあります。この作業を行うにはどうすればよいですか。

プロパティに項目のマッピングのためのモデルは、この

<set name="propertySet" cascade="all"> 
    <key column="item_id" not-null="true"/> 
    <one-to-many class="Property"/> 
</set> 

答えて

4

使用cascade="all-delete-orphan"ようになります。このような関係のウォークスルーについては、リファレンスガイドのfirst exampleを参照してください。また、これがbidirectional one-to-manyである場合、この側(セット)はinverse="true"とマッピングされ、その関係は関係の他の側のみに基づいて決定される。

関連する問題