Comment mettre à jour un postgresql colonne de tableau avec le printemps JdbcTemplate?

Je suis en utilisant le Printemps JdbcTemplate, et je suis coincé à l'endroit où j'ai une requête qui met à jour une colonne qui est en fait un tableau de int. La base de données postgres 8.3.7.
C'est le code que j'utilise :

public int setUsersArray(int idUser, int idDevice, Collection<Integer> ids) {

    int update = -666;

    int[] tipi = new int[3];
    tipi[0] = java.sql.Types.INTEGER;
    tipi[1] = java.sql.Types.INTEGER;
    tipi[2] = java.sql.Types.ARRAY;

    try {
        update = this.jdbcTemplate.update(setUsersArrayQuery, new Object[] {
                ids, idUser, idDevice }, tipi);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return update;
}

De la requête "update nom_table set array_column = ? où id_user = ? et id_device = ?".
Je bénéficier de cette exception :

org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [mise à jour acotel_msp.users_mau ensemble denied_sub_client = ? où id_users = ? et id_mau = ?]; La colonne de l'index est hors de portée: 4, nombre de colonnes: 3.; exception imbriquée est org.postgresql.util.PSQLException: L'index de colonne est hors de portée: 4, nombre de colonnes: 3.

Causés par: org.postgresql.util.PSQLException: L'index de colonne est hors de portée: 4, nombre de colonnes: 3.

J'ai regardé dans spring jdbc modèle docs mais je ne peux pas trouver l'aide, je vais continuer à chercher, de toute façon, quelqu'un pourrait-il m'indiquer la bonne direction? Merci!

EDIT :

Évidemment, la commande a été mal, de ma faute...

J'ai essayé vos deux solutions, dans le premier cas, j'ai eu ceci :

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; mauvaise grammaire SQL [mise à jour aux utilisateurs de définir des denied_sub_client = ? où id_users = ? et id_device = ?]; exception imbriquée est org.postgresql.util.PSQLException: Ne peut pas lancer une instance de java.util.Liste de tableaux de type Types.TABLEAU

Essayé la deuxième solution, j'ai eu ceci :

org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; mauvaise grammaire SQL [mise à jour aux utilisateurs de définir des denied_sub_client = ? où id_users = ? et id_device = ?]; exception imbriquée est org.postgresql.util.PSQLException: Ne peut pas lancer une instance de [Ljava.lang.Objet; à type de Types.TABLEAU

Je suppose que j'ai besoin d'une instance de java.sql.Tableau, mais comment puis-je la créer à l'aide de JdbcTemplate?

InformationsquelleAutor Francesco | 2009-11-11