hibernate一对多关系没有正确更新

时间:2011-07-27 22:26:21

标签: java mysql hibernate

我有两个表项和属性,一个项可以有多个属性。我已经在hibernate中正确地建模了它(我认为),当加载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);

现在的情况是,数据库现在有6个属性而不是1.我该怎么做才能使这个工作?

Item的映射到属性的模型看起来像这样

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

1 个答案:

答案 0 :(得分:4)

使用cascade="all-delete-orphan"。有关此类关系的演练,请参阅参考指南中的first example。此外,如果这是bidirectional one-to-many,那么此方(集合)应与inverse="true"映射,以便仅根据关系的另一方确定关系。