1

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)");

私は何が間違っているのですか?

ありがとう!!

4

1 に答える 1

2

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

于 2013-02-19T11:48:56.787 に答える