当我尝试在SQL Server中测试crud操作时,我遇到了一个非常令人沮丧的问题。 请注意,我使用了hibernate,dbunit,ms sql server2008r2和jpa的组合。
所以,正如我之前提到的,我尝试使用dbunit来测试CRUD操作。根据dbunit的文档,我创建了一个XML文件,其中包含必要的记录,另一个用于在操作结束时进行比较。 在我的例子中,初始的xml只包含两行,它们也代表了我的实体之间的关系。 初始xml
<xml>
<A id="1" name="nameA"/>
<B id="1" name="nameB" A_id="1">
</xml>
预期结果
<xml>
<A id="1" name="nameA"/>
<B id="1" name="nameB" A_id="1">
<B id="2" name="nameBB" A_id="1">
</xml>
请注意,我们只在clean insert策略下设置了设置操作,而未定义拆卸操作,默认为none。
因此,当我尝试在表b中插入另一条记录并引用表A时,如果数据库是干净的,则表示正常。但是,每次我们尝试重新执行相同的测试时,由于外键约束违规而导致错误。 理论上,dbunit每次插入从xml中检索的数据时,都应该(按照清除插入策略)以相反的顺序删除然后插入记录。 但是,如前所述,它不会删除指示外键违规的记录,这使我认为相反的顺序并没有真正起作用。
有什么想法吗? tnx提前
答案 0 :(得分:0)
三个想法:
ONE:也许你应该关闭标签'B':
<B id="1" name="nameB" A_id="1">
应该(最后缺少“/”)
<B id="1" name="nameB" A_id="1"/>
TWO:您可以检查您的应用程序是否未在其他表中添加行。例如C引用B或A
三:您可以检查是否有任何未结交易