-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'的類型,你從哪裏得到這個列表? –
讓我更新我的問題來更好地解釋我自己,知道你可以看到我的改變 –