-1
我想插入使用的JdbcTemplate多个记录到MySQL数据库,所以我选择使用BATCHUPDATE方法,这是我的代码:的JdbcTemplate BATCHUPDATE抛出ClassCastException异常
@Override
public void actualizarAmortizaciones(List<Amortizacion> lstAmortizaciones) {
jdbcTemplate.batchUpdate("{call contable.spact_amortizaciones(?,?,?,?,?,?,?,?,?,?)}", new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
Amortizacion objAmortizacion = lstAmortizaciones.get(i);
ps.setString(1, objAmortizacion.getStrId());
ps.setString(2, objAmortizacion.getStrTarjeta());
ps.setInt(3, objAmortizacion.getIntNumeroAmortizacion());
ps.setDate(4, (Date) objAmortizacion.getDatFechaPago());
ps.setString(5, objAmortizacion.getStrHoraPago());
ps.setInt(6, objAmortizacion.getIntCubierto());
ps.setBigDecimal(7, objAmortizacion.getBdTotalPagado());
ps.setBigDecimal(8, objAmortizacion.getBdCapitalPagado());
ps.setBigDecimal(9, objAmortizacion.getBdInteresPagado());
ps.setBigDecimal(10, objAmortizacion.getBdIvaPagado());
}
@Override
public int getBatchSize() {
return lstAmortizaciones.size();
}
});
}
下一行抛出一个错误
Amortizacion objAmortizacion = lstAmortizaciones.get(i);
这是错误:
java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to com.bo.Amortizacion
at com.dao.impl.TransaccionDAO$1.setValues(TransaccionDAO.java:49)
at org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:956)
at org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:946)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658)
at org.springframework.jdbc.core.JdbcTemplate.batchUpdate(JdbcTemplate.java:946)
at com.dao.impl.TransaccionDAO.insertarAmortizaciones(TransaccionDAO.java:44)
有人知道这是为什么发生?,
在此先感谢。
更新
我得到的名单从JSON解析(我使用GSON)用下面的代码:
@SuppressWarnings("unchecked")
@RabbitListener(queues = "generarAmortizacionesContable")
public void generarAmortizaciones(String json){
Gson gson = new Gson();
List<Amortizacion> lstAmortizaciones = gson.fromJson(json, List.class);
transaccionBS.insertarAmortizaciones(lstAmortizaciones);
}
但我注意到,当我调试我的代码列表中包含LinkedTreeMapElements所以我不知道这是否是一个好的行为
什么是'lstAmortizaciones'的类型,你从哪里得到这个列表? –
让我更新我的问题来更好地解释我自己,知道你可以看到我的改变 –