2017-07-14 4 views
0

Je dois créer une application de repos en utilisant Spring et PostgreSQL comme base de données. J'ai besoin d'entrer dans la base de données un objet contenant une ArrayList de String: ArrayList < String>. Mon problème est que je ne peux pas trouver un moyen de définir mon arraylist dans preparedStatement. J'ai essayé avec setObject mais cela ne fonctionne évidemment pas. Il va comme suit:Java Spring Insérer Arraylist dans la base de données postgresql JdbcTemplate

public int insert(Location location) { 
     return jdbcTemplate.update(conn -> { 
      PreparedStatement ps = conn.prepareStatement(INSERT_STMT); 
      ps.setInt(1, location.getParam1()); 
      ps.setString(2, location.getParam2()); 
      ps.setString(3, location.getParam3()); 
      ps.setString(4, location.getParam4()); 
      ps.setString(5, location.getParam5()); 
      ps.setString(6, location.getParam6()); 
      ps.setString(7, location.getParam7()); 
      ps.setObject(8, location.getArrayListDate()); 
      return ps; 
     }); 
    } 
private static final String INSERT_STMT = 
     " insert into locations (param1, param2, param3, param4, param5, param6, param7, dates)" 
       + " values (?, ?, ?, ?, ?, ?, ?, ?)" 
     ; 

Le formulaire table:

create table locations (
    param1 int primary key 
    , param2 text 
    , param3 text 
    , param4 text 
    , param5 text 
    , param6 text 
    , param7 text 
    , dates TEXT[] 
) 

Comment puis-je faire ce travail? Merci :)

Répondre

0

Vous devez convertir java.util.ArrayList à java.sql.Array en utilisant conn.createArrayOf() et le transmettre comme

pstmt.setArray("text", array) 

Référez this

+0

Il woked merci !! Je devais juste ajouter: String [] data = location.getDate(). ToArray (nouvelle chaîne [location.getDate(). Size()]); convertir mon arraylist à la liste de String! – Tirvax

+0

@WangJiaMing Si cela a fonctionné pour vous, acceptez au moins la réponse de z21. – kamwo