У меня есть модульный тест, который использует 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, но для тестов мне нужна база данных в памяти.
Не могли бы вы помочь?
Спасибо
jdbcTemplate.update()
? Я думаю, вам следует использоватьquery
,execute
или аналогичный... например, методqueryForInt
. - person sabadow   schedule 14.11.2012