2016-05-22 4 views
0

Ich bin aus Nervenzellen und ich brauche deine Hilfe Jungs wirklich.jdbcTemplate.batchUpdate für die Liste der Einsätze funktioniert nicht

Aus irgendeinem Grund, den ich nicht Liste der Antworten eingefügt Datenbank erhalten können

ich jdbcTemplate verwenden zu tun, dass und mein Code sieht wie folgt aus

public void insertVastaukset(List<Vastaus> vastaukset) { 
    final String sql = "insert into vastaus (kysymysID, vastausteksti) values(?,?)"; 
    getJdbcTemplate().batchUpdate(sql, 
      new BatchPreparedStatementSetter() { 
       @Override 
       public void setValues(PreparedStatement ps, int i) 
         throws SQLException { 
        Vastaus vastaus = vastaukset.get(i); 
        ps.setInt(1, vastaus.getKysymysID()); 
        ps.setString(2, vastaus.getVastausteksti()); 

       } 

       @Override 
       public int getBatchSize() { 
        return vastaukset.size(); 
       } 
      });} 

Und aus irgendeinem Grund gibt das Programm keine Fehler ! Als ich es vor ein paar Tagen ausprobiert habe, gab es mir einen Null-Zeiger, aber jetzt ist es behoben, aber immer noch keine Einfügungen in der Datenbank erstellt. Hilf mir bitte, vielen Dank!

+0

Ihre Transaktion richtig eingestellt ist. Wird es nach dem Batch-Update-Aufruf aktiviert? –

+0

BTW jdbcTemplate.update und Abfrage funktionieren gut – JavaEvgen

+0

@ManasMarthi Ich weiß nicht, ich bin neu in jdbcTemplate, wie Sie das überprüfen ?. Ich habe auch versucht, Listenelemente in BatchUpdate Konstruktion anzuzeigen, und es funktioniert, aber immer noch keine Einfügungen in der Datenbank – JavaEvgen

Antwort

0

Verwenden Sie den unten catch-Block, um die Ausnahmen zu untersuchen

int[] updateCounts; 
    try { 
     updateCounts = getJdbcTemplate().batchUpdate("insert into test123 (id, value) values (?,?)", 
       new BatchPreparedStatementSetter() { 

       //// YOUR CODE HERE 

       });    
    } 
    catch (Exception sqle) { 
     Throwable s2 = sqle; 
     System.out.println("=============v"+s2.getClass().getName()+"====================="); 
     while (s2!=null) { 
      s2.printStackTrace(); 
      s2 = s2.getCause(); 
      if(s2 instanceof java.sql.BatchUpdateException) { 
       System.out.println("======================^^^^^^======================"); 
       ((java.sql.BatchUpdateException) s2).getNextException().printStackTrace(); 
      } 
     } 
     throw sqle; 
    } 
+0

Danke für die Antwort, krank versuchen Sie es. Aber ich bin ziemlich sicher, dass das Problem ist, weil ich Bean id = "dataSource" class = "org.apache.commons.dbcp.BasicDataSource" anstelle von org.apache.commons.dbcp.BasicDataSource habe, aber wenn ich es ändere, gewann das Projekt Lauf nicht mehr auf Apache. Hat jemand dafür eine Lösung? – JavaEvgen

Verwandte Themen