У меня есть код JDBC, который вставляется в таблицу базы данных, выполняя PreparedStatement. Когда я запускаю код в базе данных HSQLDB в памяти (как часть теста JUnit), я получаю исключение SQLFeatureNotSupportedException, единственной информацией является сообщение «функция не поддерживается» и код поставщика -1500. То, что я делаю, является базовой вставкой в таблицу - я не могу себе представить, что это не поддерживается в последнем HSQLDB.Сообщение об исключении критического сообщения HSQLDB: «функция не поддерживается»
Мой код:
public Observations saveOrUpdate(final Observations observations)
{
try
{
if (connection == null)
{
connection = getJdbcTemplate().getDataSource().getConnection();
}
// create the prepared statement
String sql = "INSERT INTO " + Observations.TABLE_NAME +
" (OBS_YEAR, WINTER, SPRING, SUMMER, FALL, ANNUAL, DATA_TYPE, CREATED_DATE, UPDATED_DATE, " +
Observations.ID_COLUMN_NAME +
") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, observations.getYear());
preparedStatement.setBigDecimal(2, observations.getJan());
preparedStatement.setBigDecimal(3, observations.getFeb());
preparedStatement.setBigDecimal(4, observations.getMar());
preparedStatement.setBigDecimal(5, observations.getApr());
preparedStatement.setBigDecimal(6, observations.getMay());
preparedStatement.setString(7, observations.getDataType().toString());
preparedStatement.setTimestamp(8, new Timestamp(observations.getCreatedDate().getTime()));
preparedStatement.setTimestamp(9, new Timestamp(observations.getUpdatedDate().getTime()));
preparedStatement.setLong(10, observations.getId());
preparedStatement.executeUpdate(sql);
return observations;
}
catch (SQLException ex)
{
throw new RuntimeException(ex);
}
}
Можно ли предположить, что может быть проблема или что-нибудь еще, что я должен исследовать дальше? Заранее спасибо за вашу помощь.
--James
Try размещать больше информации: журнал исключения, версия вашего HSQLDB (2,0 возможно), ваша версия Java и т.д. Я ищу в чтобы помочь вам. Я предполагаю, что это проблема совместимости между jre и hsqldb. – Aito
Спасибо большое, Айто. Я использую JAR-файл HSQLDB 2.0. Я запускаю код как часть теста JUnit 4. Я запускаю его из Eclise IDE, который использует 1.6 JRE. DataSource настроен с использованием Spring, и я получаю соединение с Spring JdbcTemplate, который я настроил в класс DAO, который содержит этот код. –