Spring JDBC & Oracle DB 12c: java.sql.SQLException: Ungültige Spalte Typ. Warum?
Ich bin kämpfen, mit folgender Ausnahme:
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [update EVALUATION_SHEET set STATUS=?, LAST_EDITED=? where id=?]; SQL state [99999]; error code [17004]; Invalid column type; nested exception is java.sql.SQLException: Invalid column type
Welche geworfen wird, hier:
jdbcTemplate.update("update E_SHEET set STATUS=?, LAST_EDITED=? where id=?",
new Object[]{eSheet.getStatus().ordinal(), eSheet.getLastEditDate(), eSheet.getId()},
new Object[]{OracleTypes.NUMBER, OracleTypes.TIMESTAMP, OracleTypes.NUMBER});
Die Datenbank-Tabelle wird wie folgt erstellt:
create table E_SHEET (
ID number not null unique,
ID_POSITION number not null,
STATUS number default 0 not null,
ID_EXAMINER number not null,
LAST_EDITED timestamp not null);
Ich habe keine Ahnung, was das problem verursacht. Diese Methode:
eSheet.getLastEditDate()
gibt java.util.Date-Objekt. Ich bin mit Spring JDBC-template mit Spring Boot und Oracle DB 12c als datasource.
- last_edited ein Zeitpunkt ist, es bedeutet, dass Sie müssen verwenden Sie die timestamp-Objekt:
new Timestamp(eSheet.getLastEditDate().getTime())
- Das statement sagt im Grunde nur "ich habe diese andere Ausnahme". Post, dass man.
Du musst angemeldet sein, um einen Kommentar abzugeben.
nachdem die spring-Dokumentation http://docs.spring.io/spring/docs/current/spring-framework-reference/html/jdbc.html, ein update würde so arbeiten:
jdbcTemplate.update("update t_actor set last_name = ? where id = ?", "Banjo", 5276L);
oder so
jdbcTemplate.update("update orders set shipping_charge = shipping_charge * ? /100 where id = ?", pct, orderId);
Aber Sie werden übergeben von arrays von Objekten als Parameter an die Methode.
Warum nicht einfach diese?
jdbcTemplate.update("update E_SHEET set STATUS=?, LAST_EDITED=? where id=?", eSheet.getStatus().ordinal(), eSheet.getLastEditDate(), eSheet.getId());