我在报告和设置之间存在一对多的关系。映射在父定义为无法使用休眠功能从设置中删除项目
<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调用调用相同的方法,记录不会被删除。我没有看到异常,Hibernate拦截器指示
1:已针对预期条目调用onDelete()方法,
2:that transaction.wasCommitted()== true。 (在afterTransactionCompleted()方法中)。
所有似乎都没问题,但记录不会从数据库中删除。我检查SQL输出,并没有发现删除。