O wxvc_collection
tipo de dados da coluna é int[]
, t_hot_hub_operation_item
é o nome da tabela.
fun main() {
val connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/sage-dev", "postgres", "123456")
val sql = "INSERT INTO t_hot_hub_operation_item (wxvc_collection) VALUES (?)"
val statement = connection.prepareStatement(sql)
val array = connection.createArrayOf("int4", arrayOf(listOf(1, 2, 3)))
statement.setArray(1, array)
statement.executeUpdate()
}
Referenciei esta resposta , mas ela já parece desatualizada.
A mensagem de erro ao executar o código é a seguinte:
Exception in thread "main" org.postgresql.util.PSQLException: ERROR: invalid input syntax for type integer: "[1, 2, 3]"
in location:unnamed portal parameter $1 = '...'
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2713)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2401)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:368)
at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:498)
at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:415)
at org.postgresql.jdbc.PgPreparedStatement.executeWithFlags(PgPreparedStatement.java:190)
at org.postgresql.jdbc.PgPreparedStatement.executeUpdate(PgPreparedStatement.java:152)
at com.sage.server.TestKt.main(Test.kt:16)
Observação: tente não alterar a instrução SQL , porque eu uso o framework mybatis, que não suporta modificação de instruções SQL.
Acho que você está passando um array aninhado (arrayOf(listOf(1, 2, 3))) em vez de um array plano.
O PostgreSQL espera um int[] unidimensional.
Experimente isto: