1

SQL Server で crud 操作をテストしようとすると、非常に苛立たしい問題に直面してきました。hibernate、dbunit、ms sql server2008r2 および jpa の組み合わせを使用していることに注意してください。

そのため、前に述べたように、dbunit を使用して CRUD 操作をテストしようとしています。dbunit のドキュメントに従って、必要なレコードを含む XML ファイルを作成し、操作の最後に比較する別のファイルを作成します。私の場合、最初の xml にはエンティティ間の関係を表す 2 行しか含まれていません。初期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> 

クリーン インサート ストラテジではセットアップ オペレーションのみを設定しましたが、ティアダウン オペレーションは定義されておらず、デフォルトでは何も設定されていないことに注意してください。

したがって、テーブル A への参照を使用してテーブル b に別のレコードを挿入しようとすると、データベースがクリーンであれば問題ありません。ただし、同じテストを再実行しようとするたびに、外部キー制約違反によりエラーが発生します。理論的には、dbunit は xml から取得したデータを挿入するたびに、(クリーンな挿入戦略に従って) 逆の順序で削除してからレコードを挿入する必要があります。ただし、前述のように、フォアキー違反を示すレコードは削除されないため、逆順は実際には機能していないと思います。

何か案は?事前にt​​nx

4

1 に答える 1

0

3つのアイデア:

ONE:タグ「B」を閉じる必要があるかもしれません:

<B id="1" name="nameB" A_id="1">

する必要があります(最後に「/」がありません)

<B id="1" name="nameB" A_id="1"/>

TWO:アプリケーションが他のテーブルに行を追加していないことを確認できます。例:BまたはAを参照するC

3つ:未解決のトランザクションがあるかどうかを確認できます

于 2013-02-09T08:41:18.810 に答える