2016-09-23 98 views
0

我正在開發一個Spring應用程序,其中一切都使用maven配置(在pom.xml)。我的應用程序使用PostgreSQL數據庫,但單元測試使用內存中的HSQLDB數據庫。使用maven配置HSQLDB

我只是遇到TEXT列的問題,因爲它們本身不受HSQLDB支持。在我的實體類,我有:

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

這正常工作與Postgres的,但HSQLDB正在生成以下錯誤:type not found or user lacks privilege: TEXT。該表格並未創建,當然,因爲我的大多數測試都失敗了。

我發現我需要activate PostgreSQL compatibility才能通過將sql.syntax_pgs設置爲true來工作。

我的問題是:我在哪裏放這個設置?我想把它放在pom.xml因爲一切都在那裏配置,但我不知道在哪裏。

對於爲例,我有:

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

我可以以某種方式使用此設置添加一個<argLine>

回答

1

。您可以根據您的要求覆蓋屬性文件中的這些屬性或通過其他配置。您可以將「sql.syntax_pgs = true」設置爲HSQLDB連接URL。例如,在彈簧啓動的情況下,這將如下所示。

<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'中,然後在運行測試時由maven自動使用它。 – deadbeef