複数のカタログ/スキーマを照会する Hibernate アプリケーションのテストに問題があります。
本番データベースは Sybase であり、デフォルトのカタログ/スキーマにマップされたエンティティに加えて、以下のようにマップされた 2 つのエンティティがあります。したがって、合計で 3 つのカタログがあります。
@Table(catalog = "corp_ref_db", schema = "dbo", name = "WORKFORCE_V2")
public class EmployeeRecord implements Serializable {
}
@Table(catalog = "reference", schema = "dbo", name="cntry")
public class Country implements Serializable {
}
これはすべて問題なくアプリケーションで機能します。ただし、単体テストを行うときの私の通常の戦略は、Hibernate の ddl フラグを auto に設定して HSQL を使用し、dbunit にテーブルを設定させることです。
テーブルがすべて同じスキーマにある場合、これはすべて正常に機能します。
ただし、これらの追加のテーブルを追加したため、HSQL は 1 つのカタログしかサポートしないため、DDL が実行されないため、テストは中断されます。
create table corp_ref_db.dbo.WORKFORCE_V2
user lacks privilege or object not found: CORP_REF_DB
カタログが 2 つしかない場合は、HSQL データベースのデフォルトのカタログとスキーマを明示的に定義されたものに変更することで、これを回避できると思います。
これが機能する可能性のある他のメモリ内データベースはありますか、またはテストを HSQL で実行するための戦略はありますか。
デフォルトのカタログとスキーマを指定する orm.xml ファイルを提供することを考えていましたが (注釈を上書きし、定義済みのすべてのテーブルをデフォルトのカタログ/スキーマで作成します)、これらのオーバーライドは DDL の実行時に観察されないようです。上記と同じエラーが発生します。
基本的に、既存のテストを実行し、マッピングで定義されているように何らかの方法でテーブルを作成するか、エンティティレベルでカタログ/スキーマ定義をオーバーライドしたいと考えています。
どちらの結果を達成する方法も考えられません。何か案は?