Я использую Spring JdbcTemplate, и я застреваю в точке, где у меня есть запрос, который обновляет столбец, который на самом деле является массивом int. База данных - это postgres 8.3.7. Это код, я использую:Как обновить столбец массива postgresql с помощью Spring JdbcTemplate?
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;
}
Этот запрос "обновление table_name набор array_column = где id_user = и id_device =??". я получаю это исключение:
org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [обновление acotel_msp.users_mau set denied_sub_client =? где id_users =? и id_mau =?]; Индекс столбца выходит за пределы диапазона: 4, количество столбцов: 3; Вложенное исключение - org.postgresql.util.PSQLException: индекс столбца вне диапазона: 4, количество столбцов: 3.
Вызвано: org.postgresql.util.PSQLException: индекс столбца выходит за пределы допустимого диапазона: 4, количество колонок: 3.
Я просмотрел документы весны jdbc, но я не могу найти никакой помощи, я буду продолжать искать, так или иначе кто-нибудь может указать мне в правильном направлении? Благодаря!
EDIT:
Очевидно, что порядок был неправ, моя вина ...
Я попробовал оба ваши решения, в первом случае я имел это:
org.springframework.jdbc.BadSqlGrammarException : PreparedStatementCallback; плохая грамматика SQL [обновление пользователей установлено denied_sub_client =? где id_users =? и id_device =?]; вложенное исключение org.postgresql.util.PSQLException: Невозможно привести экземпляр java.util.ArrayList к типу Types.ARRAY
Попытка второе решение, которое я имел это:
org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; плохая грамматика SQL [обновление пользователей установлено denied_sub_client =? где id_users =? и id_device =?]; Вложенное исключение - org.postgresql.util.PSQLException: не может использовать экземпляр [Ljava.lang.Object; для типа Types.ARRAY
Я полагаю, мне нужен экземпляр java.sql.Array, но как его создать с помощью JdbcTemplate?
Я отредактировал мой ответ, я пытался как ваш решения, я полагаю, мне нужен экземпляр java.sql.Array, но как его создать с помощью JdbcTemplate? – Francesco