Enum kann nicht im Batch-Verfahren mit spring-jdbc NamedParameterJdbcTemplate gespeichert werdenJava

Java-Forum
Anonymous
 Enum kann nicht im Batch-Verfahren mit spring-jdbc NamedParameterJdbcTemplate gespeichert werden

Post by Anonymous »

Ich habe ein Enum-Problem mit Spring-JDBC. Ich habe ein POJO, das einen Enumerationswert enthält. Ich möchte den Zeichenfolgenwert in der Datenbank speichern, nicht die Ordnungszahl. Ich habe ein DAO erstellt und es funktioniert gut, mit Ausnahme von Batch-Methoden mit einem benanntenParameterJdbcTemplate (für jdbcTemplate und BatchPreparedStatementSetter funktioniert es, aber ich verwende lieber benannte Parameter).
Zum Beispiel:

Code: Select all

public int[] batchUpdate(List pojos) throws DaoException {
SqlParameterSource[] parameters = new SqlParameterSource[pojos.size()];

for (int i = 0; i < pojos.size(); i++) {
parameters[i] = new BeanPropertySqlParameterSource(pojos.get(i));
}

try {
return namedParameterJdbcTemplate.batchUpdate(SQL_UPDATE, (SqlParameterSource[]) parameters);
} catch (Exception ex) {
throw new DaoException(ex);
}
}
funktioniert nicht für Enums-Eigenschaften.
Ich habe diesen Fehler:

Verursacht durch: org.h2.jdbc.JdbcSQLException: Wert zu lang für Spalte
"STATUS CHARACTER VARYING(20) NOT NULL":
"'aced00057e7200466f72672e67656e792e7064702e6669726562697264732e67 656e79746f74652e646f6d61696e6d6f64656c2e6265742e4265744465636f6...
(258)"; SQL-Anweisung: UPDATE ... SET ..., Status = ? WO id = ? [22001-187] bei
org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
bei org.h2.message.DbException.get(DbException.java:179) bei
org.h2.table.Column.validateConvertUpdateSequence(Column.java:327) unter
org.h2.table.Table.validateConvertUpdateSequence(Table.java:737) unter
org.h2.command.dml.Update.update(Update.java:125) unter
org.h2.command.CommandContainer.update(CommandContainer.java:78) unter
/>org.h2.command.Command.executeUpdate(Command.java:254) at
org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:157)
at
org.h2.jdbc.JdbcPreparedStatement.executeBatch(JdbcPreparedStatement.java:1183)
at
org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:1005)
at
org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:989)
at
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:644)
... 43 weitere

MyPojo hat einen Enumerationswert (Status). Es ist seltsam, weil die Enumerationszeichenfolge, die ich speichern möchte, „validiert“ und nicht „aced000...“ ist. Wenn ich JPA verwenden würde, würde ich @Enumerated(EnumType.STRING) für mein Statusfeld verwenden, aber gibt es so etwas auf spring-jdbc?
Grüße

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post