Tengo el código JDBC que se inserta en una tabla de base de datos mediante la ejecución de un PreparedStatement. Cuando ejecuto el código en una base de datos HSQLDB en memoria (como parte de una prueba JUnit) obtengo una SQLFeatureNotSupportedException con la única información que es el mensaje "feature not supported" y el código de proveedor -1500. Lo que estoy haciendo es una inserción básica en una tabla. No puedo imaginar que esto no esté soportado en la última HSQLDB.HSQLDB mensaje de excepción críptica: "característica no compatible"
Mi código:
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);
}
}
Puede alguien sugerir qué puede ser el problema o algo más que debería investigar más a fondo? Gracias de antemano por tu ayuda.
--James
tratar de publicar más información: registro de la excepción, la versión de su HSQLDB (2.0 tal vez), la versión de Java, etc. Estoy buscando en Para ayudarte Supongo que es un problema de compatibilidad entre el jre y su hsqldb. – Aito
Muchas gracias, Aito. Estoy usando el archivo HSQLDB 2.0 JAR. Estoy ejecutando el código como parte de una prueba JUnit 4. Lo lanzo desde Eclise IDE que está usando un 1.6 JRE. El DataSource se configura con Spring y recibo la conexión de Spring JdbcTemplate que he configurado en la clase DAO que contiene este código. –