2016-05-22 2 views
0

Я из нервных клеток, и мне очень нужна ваша помощь.jdbcTemplate.batchUpdate для списка вставок не работает

По некоторым причинам я не могу получить список ответов, вставленных в базу данных

Я использую JdbcTemplate, чтобы сделать это, и мой код выглядит следующим образом

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(); 
       } 
      });} 

И по какой-то причине программа не дает ошибку ! Когда я попробовал пару дней назад, он дал мне нулевой указатель, но теперь его исправленные, но все еще нет вставки в базу данных. Помогите мне, спасибо, большое спасибо!

+0

Является ли ваша транзакция установлена ​​правильно. Получается ли он после вызова пакетного обновления? –

+0

btw jdbcTemplate.update и запрос работают просто отлично – JavaEvgen

+0

@ManasMarthi Я не знаю, я новичок в jdbcTemplate, как проверить это ?. Я также попытался отобразить элементы списка в конструкции batchUpdate, и он работает, но все равно нет вставок в базе данных – JavaEvgen

ответ

0

Используйте ниже блок поймать для изучения исключения

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

Спасибо за ответ, плохо попробуйте. Но я уверен, что проблема в том, что у меня есть bean id = "dataSource" class = "org.apache.commons.dbcp.BasicDataSource" вместо org.apache.commons.dbcp.BasicDataSource, но когда я меняю его, проект выиграл Больше не бегай на апаче. У кого-нибудь есть решение? – JavaEvgen