8

現在、次のセットアップを使用して、組み込みデータベースにスキーマを作成してから、テストを実行しています

私のアプリケーションコンテキストでは

<jdbc:embedded-database id="dataSource" type="HSQL">
    <jdbc:script location="classpath:createSchema.sql" />
</jdbc:embedded-database>

createSchema.sql

create schema ST_TEST AUTHORIZATION DBA;

休止状態のプロパティ

<properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
    <property name="hibernate.default_schema" value="ST_TEST"/>
    <property name="hibernate.hbm2ddl.auto" value="create-drop" />
    <property name="hibernate.show_sql" value="true" />
    <property name="hibernate.use_sql_comments" value="true" />
    <property name="hibernate.cache.use_second_level_cache" value="false" />
</properties>

私の質問は、これがこれを行うための最良の方法です。または、プロパティで別のスキーマ名を使用できますか? または jdbc:embedded-database 要素にスキーマ名を設定します

4

2 に答える 2

11

デフォルトでは、HSQL は PUBLIC というスキーマを作成します。ソース: HSQL ドキュメント

テストでスキーマ名が表示されないことを確認すると (対話を行うための名前付きクエリ/エンティティ マネージャー)、この PUBLIC スキーマを使用するように休止状態のプロパティを変更できます。

<properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
    <property name="hibernate.default_schema" value="PUBLIC"/>
    <property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>

または
、プロパティ リストから default_schema を省略し、とにかく PUBLIC を使用します。

<properties>
    <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
    <property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
于 2013-08-21T08:11:17.437 に答える
4

このコードを Base Testing クラスで使用し、@BeforeClass アノテーション (Junit 用) を使用して呼び出すことができます。私はこのようにします。

    EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder();
    builder = builder.setType(EmbeddedDatabaseType.HSQL).addScript(
            "createSchema.sql");
    builder.setName("MyDatabase");
    EmbeddedDatabase db = builder.build();
于 2013-08-20T10:41:49.320 に答える