dbexception.java,无法使用spring-jdbc以批处理方式存储Enum NamedParameterJdbcTemplate

我正面临着spring-jdbc的枚举问题。我有一个包含枚举值的POJO。我想将字符串值存储在数据库中,而不是序号。我做了一个DAO,除了具有namedParameterJdbcTemplate的批处理方法(对于jdbcTemplate和BatchPreparedStatementSetter它可以工作,但我更喜欢使用命名参数),它工作得很好。无法使用spring-jdbc以批处理方式存储Enum NamedParameterJdbcTemplate

例如:

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);

}

}

不适用于枚举属性的作用。

我有这样的错误:

Caused by: org.h2.jdbc.JdbcSQLException: Value too long for column "STATUS CHARACTER VARYING(20) NOT NULL": "'aced00057e7200466f72672e67656e792e7064702e6669726562697264732e67656e79746f74652e646f6d61696e6d6f64656c2e6265742e4265744465636f6... (258)"; SQL statement: UPDATE ... SET ..., status = ? WHERE id = ? [22001-187] at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) at org.h2.message.DbException.get(DbException.java:179) at org.h2.table.Column.validateConvertUpdateSequence(Column.java:327) at org.h2.table.Table.validateConvertUpdateSequence(Table.java:737) at org.h2.command.dml.Update.update(Update.java:125) at org.h2.command.CommandContainer.update(CommandContainer.java:78) at 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 more

MyPojo有枚举值(状态)。这很奇怪,因为我想存储的枚举字符串'验证'而不是'aced000 ...'。如果我使用的是JPA,我会在状态字段中使用@Enumerated(EnumType.STRING),但是在spring-jdbc中存在这样的东西吗?

问候

2015-09-28

Steph

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值