2016-09-23 2 views
0

Я разрабатываю приложение Spring, где все настроено с помощью maven (в pom.xml). В моем приложении используется база данных PostgreSQL, но в модульных тестах используется база данных HSQLDB в памяти.Настроить HSQLDB с maven

Я просто столкнулся с проблемой с колонками 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, потому что там все настроено, но я не знаю где.

Для 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 зависимости он использует свойство соединения по умолчанию. Вы можете переопределить эти свойства в файле свойств или через другую конфигурацию согласно вашему требованию. Вы можете установить «sql.syntax_pgs = true» в URL-адрес соединения HSQLDB. Например, в случае весенней загрузки это будет выглядеть ниже.

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

вы можете установить его в конфигурации Datasource, как указано 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

Смежные вопросы