我在通过文件将数据插入PostgreSQl时得到BatchUpdateException
。我得到的例外是:
批处理条目 0 {调用PACKAGE_NAME。PROCEDURE_NAME((} 已中止。 调用getNextException以查看原因
源代码如下:-
successMsg = getJdbcTemplate().batchUpdate("{call "+ packageName +"."+ procedureName +sb.toString(),new BatchPreparedStatementSetter(){
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException
{
String values = insertList.get(i);
String []valuesArray=values.split(",");
int parameterCount=ApplicationConstant.ONE;
for(int valueIndex=0;valueIndex<valuesArray.length;valueIndex++)
{
ps.setString(parameterCount++, String.valueOf(valuesArray[valueIndex])!=null?String.valueOf(valuesArray[valueIndex]).trim().replaceAll("@@@", ","):""); //added trim() in order to avoid blank space entry in DB.
}
if(financialMonth!=null&&!financialMonth.equals(""))
{
ps.setString(parameterCount++,"01-"+financialMonth);
}
ps.setInt(parameterCount++,loginBean.getUserId());
ps.setDate(parameterCount, null);
}
@Override
public int getBatchSize()
{
return insertList.size();
}
});
正如异常所说,您应该调用getNextException以查看原因。
try{
successMsg = getJdbcTemplate().batchUpdate("{call "+ packageName +"."+ procedureName +sb.toString(),new BatchPreparedStatementSetter(){
} catch (SQLException se) {
se.getNextException().printStackTrace();
}