2016-09-23 14 views
0

すべてがmaven(pom.xml)で設定されているSpringアプリケーションを開発しています。私のアプリケーションはPostgreSQLデータベースを使用しますが、ユニットテストではメモリ内のHSQLDBデータベースを使用します。mavenでHSQLDBを設定する

TEXTカラムの問題は、HSQLDBでネイティブにサポートされていないため、ちょうどこの問題が発生しました。私のエンティティクラスでは私が持っている:

private @Column(columnDefinition = "text") String propertyName; 

これはPostgresの罰金に動作しますが、HSQLDBは​​次のエラーを生成している:type not found or user lacks privilege: TEXTを。テーブルは作成されていませんが、結果としてほとんどのテストは失敗します。

私はactivate PostgreSQL compatibilitysql.syntax_pgsからtrueに設定することで動作するようにする必要があることを発見しました。

私の質問は次のとおりです。この設定はどこに配置しますか?すべてがそこに設定されているので、私はpom.xmlに入れたいですが、私はどこを知っていません。 exempleについては

私が持っている:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <configuration> 
     <argLine>-Dspring.profiles.active=test</argLine> 
    </configuration> 
</plugin> 

私は何とかこの設定で<argLine>を追加することはできますか?

答えて

1

与えられたとして、あなたは、データソースの設定でそれを設定することができます。これらのプロパティーは、プロパティー・ファイルで、または要件に応じて他の構成を使用してオーバーライドすることができます。 HSQLDB接続URLに "sql.syntax_pgs = true"を設定することができます。例えば、スプリングブートの場合、以下のようになります。

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
     <configuration> 
       <argLine>-Dspring.datasource.url=jdbc:hsqldb:mem:PUBLIC;sql.syntax_pgs=true</argLine> 
     </configuration> 
</plugin> 
0

あなたはそれがデフォルトの接続プロパティを使用してHSQLDBの依存関係を追加するとhere

<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource"> 
    <property name="driverClassName" value="org.hsqldb.jdbcDriver" /> 
    <property name="url" value="jdbc:hsqldb:mem:PUBLIC;sql.syntax_pgs=true" /> 
    <property name="username" value="sa" /> 
    <property name="password" value="" /> 
</bean> 
+0

これはどこに入れますか?また、 'test'プロファイルを使用するときにのみこれを有効にします。 – deadbeef

+0

テストのためにHSQLDBを設定するときは、これを置く必要があります。このプロパティは、hsqldbを使用するすべてのテストに対して設定されます。 –

+0

私はどこでもHSQLDBを設定していません。依存関係として 'pom.xml'に追加しました。テストを実行するときに自動的に使用されます。 – deadbeef

関連する問題