【问题标题】:Configure HSQLDB with maven使用 maven 配置 HSQLDB
【发布时间】:2017-02-01 08:20:01
【问题描述】:

我正在开发一个 Spring 应用程序,其中所有内容都使用 maven 进行配置(在 pom.xml 中)。我的应用程序使用 PostgreSQL 数据库,但单元测试使用内存中的 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>

我可以通过此设置添加&lt;argLine&gt; 吗?

【问题讨论】:

    标签: java spring hibernate maven hsqldb


    【解决方案1】:

    当您添加 hsqldb 依赖项时,它使用默认连接属性。您可以根据您的要求在属性文件中或通过其他配置覆盖这些属性。您可以将“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>
    

    【讨论】:

      【解决方案2】:

      您可以在给定的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>
      

      【讨论】:

      • 我把这个放在哪里?另外我只希望它在使用test 配置文件时生效。
      • 您需要在为测试配置 HSQLDB 时输入这个。将为所有使用 hsqldb 的测试设置此属性。
      • 我没有在任何地方配置 HSQLDB,我只是将它作为依赖项添加到 pom.xml 中,然后在运行测试时被 maven 自动使用。
      猜你喜欢
      • 2011-10-10
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 2012-08-27
      • 1970-01-01
      相关资源
      最近更新 更多