2012-02-17 20 views
0

私はすでにテストのためにhsql dbを持っていましたが、それにいくつかのテーブルを追加しました。hsqldbカラムをサポートしていませんカラムの定義属性

.dtdと.xmlファイルは正しく更新されましたが、dbunitのテストケースから「NoSuchTableException」がスローされたため、junitsを実行できませんでした。

DAOクラスでは、犯人テーブルの次のプロパティを追加しました。

@Column(name = "keyword_id", columnDefinition = "int REFERENCES master_keyword(keyword_id)") 

columnDefinition属性を削除すると、junitは正常に機能しました。私はcolumnDefinitionがデータベース固有であることを理解しています。つまり、ジュニットの実行中にこれを使用すべきではありませんか?

私はこれに多くの時間を費やしました。問題は解決しましたが、これに関する考えはありますか?

答えて

1

ユニットテストでアノテーションを使用して自動的にデータベーステーブルを作成する場合は、明らかにcolumnDefinition属性が考慮されます。これがその目的です。

データベース特有のものがある場合、使用しているデータベース以外のデータベースの場合は、列定義では明らかに機能しません。

ここで外部キー制約を定義したいようです。なぜ、OneToOneまたはManyToOneの関連付けを使用しないのですか?

+0

私はその理由を理由にコードからその制約を避けたいと思っています。私は、ここでの定義とその制約をテーブル自体に持たせたいと思っていました。 devo/prodでは正常に動作しますが、ジュニットは失敗します。 – instanceOfObject

関連する問題