2017-08-02 107 views
0

我得到的BatchUpdateException,同時通過文件的BatchUpdateException在PostgreSQL數據庫

的例外,我得把數據插入到PostgreSQL是:

批量錄入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(); 
     } 

    }); 
+1

當你按照建議「調用getNextException來查看原因」時,你得到了什麼? –

回答

0

作爲異常說,你應該打電話到的getNextException看的原因。

try{ 
    successMsg = getJdbcTemplate().batchUpdate("{call "+ packageName +"."+ procedureName +sb.toString(),new BatchPreparedStatementSetter(){     
} catch (SQLException se) { 
    se.getNextException().printStackTrace(); 
}