Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用hibernate从集合中删除项_Hibernate_Requestfactory - Fatal编程技术网

无法使用hibernate从集合中删除项

无法使用hibernate从集合中删除项,hibernate,requestfactory,Hibernate,Requestfactory,我在报告和设置之间有一对多的关系。映射在父对象中定义为 <set name="settings" table="SETTING" inverse="true" lazy="true" fetch="select" cascade="all-delete-orphan"> <key> <column name="REPORT_ID" not-null="true" /> </key>

我在报告和设置之间有一对多的关系。映射在父对象中定义为

  <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:该事务。wasCommitted()==true。(在afterTransactionCompleted()方法中)


看起来一切正常,但记录没有从数据库中删除。我检查了SQL输出,没有发现任何删除

我发现了这个问题,但我现在关心的是RequestFactory和Hibernate如何协同工作

数据库表被映射

Report - Setting - Type 
and 
Report - Column - Type - Setting
RequestFactory在报告中有一个“.with”和两个映射:

with.add("settings");
with.add("Column.Type.settings");
如果我用语句删除这两个
中的第二个,那么
集合
将成功地保存到数据库中。如果我两者都有,那么hibernate拦截器告诉我它将删除它,但它没有,正如在原始帖子中所说的那样

我觉得这很麻烦
为什么带有
会产生这种效果
为什么拦截器告诉我它将删除,而当它不删除时,
tx.isCommitted()