【问题标题】:Can't use HSQL sequences in JUnit不能在 JUnit 中使用 HSQL 序列
【发布时间】:2013-02-03 06:45:42
【问题描述】:

我正在尝试为我的 Spring-Batch 应用程序运行 JUnit 测试类。我必须创建以下表格:http://static.springsource.org/spring-batch/reference/html/metaDataSchema.html。我在初始化数据库脚本中创建它们,包括以下内容:

CREATE SEQUENCE BATCH_STEP_EXECUTION_SEQ;
CREATE SEQUENCE BATCH_JOB_EXECUTION;
CREATE SEQUENCE BATCH_JOB_SEQ;

所有序列和表格的创建没有产生任何错误。但是在执行我的 JUnit 测试时,我收到以下错误:

org.springframework.dao.DataAccessResourceFailureException: Could not obtain identity(); nested exception is java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: BATCH_JOB_SEQ
    at org.springframework.jdbc.support.incrementer.HsqlMaxValueIncrementer.getNextKey(HsqlMaxValueIncrementer.java:119)

这是HsqlMaxValueIncrementer类运行时引起的:

stmt.executeUpdate("insert into " + getIncrementerName() + " values(null)");

我做错了什么?

谢谢!!

【问题讨论】:

  • 您使用的是哪个版本的 HSQL?

标签: spring junit hsqldb spring-batch


【解决方案1】:

对于 HSQLDB,3 个表需要 ID 字段。

CREATE TABLE BATCH_STEP_EXECUTION_SEQ (
           ID BIGINT IDENTITY
);
CREATE TABLE BATCH_JOB_EXECUTION_SEQ (
           ID BIGINT IDENTITY
);
CREATE TABLE BATCH_JOB_SEQ (
           ID BIGINT IDENTITY
);

参考:https://github.com/SpringSource/spring-batch/blob/master/spring-batch-core/src/main/resources/org/springframework/batch/core/schema-hsqldb.sql

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-23
    • 2013-11-19
    • 2012-07-31
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多