2016-09-23 1 views
0

Ich entwickle eine Spring-Anwendung, wo alles mit Maven (in pom.xml) konfiguriert ist. Meine Anwendung verwendet eine PostgreSQL-Datenbank, aber Komponententests verwenden eine speicherinterne HSQLDB-Datenbank.Konfigurieren HSQLDB mit Maven

Ich renne gerade in ein Problem mit TEXT Spalten, weil sie nicht nativ von HSQLDB unterstützt werden. Ich habe in meiner Entity-Klasse:

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

Dies funktioniert gut mit Postgres, aber HSQLDB erzeugt die folgenden Fehler: type not found or user lacks privilege: TEXT. Die Tabelle wird nicht erstellt, und als Ergebnis schlagen die meisten meiner Tests fehl.

Ich habe festgestellt, dass ich muss activate PostgreSQL compatibility, damit dies funktioniert, indem Sie sql.syntax_pgs auf true setzen.

Meine Frage ist: Wo setze ich diese Einstellung? Ich möchte es in pom.xml setzen, da alles dort konfiguriert ist, aber ich weiß nicht wo.

Für exemple ich habe:

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

Kann ich irgendwie eine <argLine> mit dieser Einstellung hinzufügen?

Antwort

1

Wenn Sie hsqldb Abhängigkeit nutzt Standard-Verbindungseigenschaften hinzufügen. Sie können diese Eigenschaften in der Eigenschaftendatei oder durch andere Konfigurationen gemäß Ihren Anforderungen überschreiben. Sie können "sql.syntax_pgs = true" auf die HSQLDB-Verbindungs-URL setzen. Zum Beispiel im Falle eines Federstiefels wird dies wie folgt sein.

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

Sie es in der Datasource-Konfiguration here wie angegeben einstellen

<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

Wo gebe ich das hin? Das möchte ich auch nur, wenn ich das 'test' Profil verwende. – deadbeef

+0

müssen Sie dies setzen, wenn Sie die HSQLDB für die Tests konfigurieren. Diese Eigenschaft wird für alle Tests mit hsqldb festgelegt. –

+0

Ich konfiguriere HSQLDB nirgendwo, ich habe es nur in 'pom.xml' als Abhängigkeit hinzugefügt, es wird dann automatisch von maven verwendet, wenn Tests ausgeführt werden. – deadbeef

Verwandte Themen