Ho codice JDBC che si inserisce in una tabella del database eseguendo un PreparedStatement. Quando eseguo il codice su un database HSQLDB in memoria (come parte di un test JUnit) ottengo un SQLFeatureNotSupportedException con l'unica informazione che è il messaggio "funzionalità non supportata" e il codice fornitore -1500. Quello che sto facendo è un inserimento di base in un tavolo - non posso immaginare che questo non sia supportato nell'ultimo HSQLDB.HSQLDB messaggio di eccezione criptico: "Non funzionalità supportata"
Il mio codice:
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);
}
}
chiunque può suggerire quello che potrebbe essere il problema o qualsiasi altra cosa che dovrei approfondire? Grazie in anticipo per il vostro aiuto.
--James
tenta di registrare ulteriori informazioni: registro di eccezione, la versione del vostro HSQLDB (2.0 forse), la versione di Java, ecc Sto cercando in per aiutarti Presumo che sia un problema di compatibilità tra jre e hsqldb. – Aito
Grazie mille, Aito. Sto usando il file JAR HSQLDB 2.0. Sto eseguendo il codice come parte di un test di JUnit 4. Lo lancio da Eclise IDE che utilizza un JRE 1.6. DataSource è configurato usando Spring e sto ottenendo la connessione da un JdbcTemplate di Spring che ho configurato nella classe DAO che contiene questo codice. –