目前在测试环境中有一个迁移依赖 DBunit + HSQLDB。我遇到了这个Nextval
问题。我的 ibatis 配置文件是这样的:
<select id="selectTestKey" resultMap="integerResult">
select nextval('test_seq') as integer
</select>
我的 Spring 映射文件如下所示:
<bean id="testDS" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:mem:test;sql.syntax_pgs=true" />
<property name="username" value="SA" />
<property name="password" value="" />
</bean>
相关休眠错误:
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error preparing statement. Cause: org.hibernate.exception.SQLGrammarException: user lacks privilege or object not found: NEXTVAL
这对 Postgres 数据库有效,但对 HSQLDB 失败。该网站上的其他答案没有为我提供解决方案。
使用以下 maven 配置获取 hsqldb:
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.2.8</version>
</dependency>