Невозможно сохранить Enum в пакетном режиме с помощью Spring-jdbc NamedParameterJdbcTemplateJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Невозможно сохранить Enum в пакетном режиме с помощью Spring-jdbc NamedParameterJdbcTemplate

Сообщение Anonymous »

У меня возникла проблема с перечислением в Spring-jdbc. У меня есть POJO, который содержит значение перечисления. Я хочу сохранить строковое значение в базе данных, а не порядковый номер. Я создал DAO, и он работает хорошо, за исключением пакетных методов с именем NameParameterJdbcTemplate (для jdbcTemplate и BatchPreparedStatementSetter это работает, но я предпочитаю использовать именованные параметры).
Например:

Код: Выделить всё

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);
}
}
не работает для свойств перечислений.
У меня есть эта ошибка:

Причина: org.h2.jdbc.JdbcSQLException: слишком длинное значение для столбца
"STATUS CHARACTER VARYING(20) NOT NULL":
"'aced00057e7200466f72672e67656e792e7064702e6669726562697264732e67 656e79746f74652e646f6d61696e6d6f64656c2e6265742e4265744465636f6...
(258)"; Оператор SQL: UPDATE... SET..., status = ? ГДЕ идентификатор = ? [22001-187] в
org.h2.message.DbException.getJdbcSQLException(DbException.java:345)
в org.h2.message.DbException.get(DbException.java:179) в
org.h2.table.Column.validateConvertUpdateSequence(Column.java:327) в
org.h2.table.Table.validateConvertUpdateSequence(Table.java:737) в
org.h2.command.dml.Update.update(Update.java:125) в
org.h2.command.CommandContainer.update(CommandContainer.java:78) в
org.h2.command.Command.executeUpdate(Command.java:254) в
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

MyPojo имеет перечислимое значение (статус). Это странно, потому что строка перечисления, которую я хочу сохранить, «проверена», а не «aced000...». Если бы я использовал JPA, я бы использовал @Enumerated(EnumType.STRING) для своего поля статуса, но существует ли подобное в Spring-jdbc?
С уважением

Подробнее здесь: https://stackoverflow.com/questions/328 ... bctemplate
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»