Ошибка запроса шаблона JDBC базы данных HSQLDB в памяти

У меня есть модульный тест, который использует JDBCTemplate и базу данных в памяти. Мои настройки HSQLDB:

jdbc.driver.className=org.hsqldb.jdbcDriver
jdbc.url=jdbc\:hsqldb\:mem\:test;DB_CLOSE_DELAY\=-1
jdbc.username=sa
jdbc.password=

Я создаю таблицу, а затем пытаюсь проверить, существуют ли в ней какие-либо данные через JDBCTemplate, прежде чем вставлять в нее новую запись.

Я вызываю запрос JDBC через JDBCTemplate, как показано ниже:

String query = "select id from Person where id=?";
int isExist = jdbcTemplate.update(query, "1");

В моей конфигурации xml я подключил источник данных, как показано ниже:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" lazy-init="default" autowire="default">
    <property name="driverClassName" value="${jdbc.driver.className}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"/>
</bean>

Я получаю сообщение об ошибке:

org.hsqldb.HsqlException : statement does not generate a row count

Тот же код работает, если я удаляю базу данных в памяти и фактически подключаюсь к базе данных Oracle, но для тестов мне нужна база данных в памяти.

Не могли бы вы помочь?

Спасибо


person Sai    schedule 14.11.2012    source источник
comment
Может быть, если вы опубликуете код, вам будет легче помочь.   -  person remigio    schedule 14.11.2012
comment
Почему вы используете метод jdbcTemplate.update()? Я думаю, вам следует использовать query, execute или аналогичный... например, метод queryForInt.   -  person sabadow    schedule 14.11.2012


Ответы (1)


Вы должны использовать метод JdbcTemplate.query, метод update предназначен для операторов вставки/удаления/обновления. Например:

int isExist = jdbcTemplate.queryForInt(query, "1");
person remigio    schedule 14.11.2012
comment
Я получаю такое же исключение при попытке вызвать хранимые процедуры с помощью jdbcTemplate.query(). - person P-RAD; 29.07.2016