2

テスト環境には、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>
4

1 に答える 1

2

NEXTVALなどはすべてPosgres互換モードで動作します。hsqldb.jarをダブルクリックし、GUI DatabaseManagerでURL​​、CREATE SEQUENCEステートメント、およびNEXTVALステートメントをチェックインすることで確認できます。

実際に使用されているHSQLDBのバージョンが2.2.8より古く、NEXTVAL機能をサポートしていない可能性があります。URLにチェックを追加すると、データベースが指定された構文プロパティをサポートしていない場合に接続が失敗します。

jdbc:hsqldb:mem:test;sql.syntax_pgs=true;check_props=true

上記のURLが接続されている場合、完全なURLがHSQLDBに送信されない可能性もありますが、NEXTVALは機能しません。

于 2012-05-30T17:30:32.057 に答える