【发布时间】:2015-03-17 16:54:31
【问题描述】:
我在报告和设置之间有一对多的关系。映射在父级中定义为
<set name="settings" table="SETTING" inverse="true" lazy="true" fetch="select" cascade="all-delete-orphan">
<key>
<column name="REPORT_ID" not-null="true" />
</key>
<one-to-many class="net.test.domain.Setting" />
</set>
孩子像这样映射父母
<many-to-one name="report" class="net.test.domain.Report" fetch="select" cascade="evict">
<column name="REPORT_ID" />
</many-to-one>
我的测试加载一个“报告”,找到一个“设置”,将其从列表中删除并在 ReportDao 上调用 saveOrUpdate()。这按预期工作,设置被删除。
现在是令人费解的部分。通过 RequestFactory 调用调用相同的方法,记录不会被删除。我没有发现异常,并且休眠拦截器指示
1:onDelete() 方法已为预期的条目调用,
2:那个 transaction.wasCommitted() == true。 (在 afterTransactionCompleted() 方法中)。
似乎一切正常,但该记录并未从数据库中删除。我检查了 SQL 输出,没有发现任何删除。
【问题讨论】: