В базе (PostgreSQL) есть функция, которая принимает параметр типа text[]. Нужно вызвать эту функцию через PreparedStatement и передать ей параметр. Вот так не получается:
| Код | Array arr = c.createArrayOf("text", new String[]{"a", "b", "c"}); //Array arr = c.createArrayOf("integer", new Integer[]{1, 2, 3}); ps.setArray(1, arr);
|
Падает на создании Array с любыми параметрами с ошибкой:
| Код | Exception in thread "main" java.lang.AbstractMethodError: org.postgresql.jdbc3.Jdbc3Connection.createArrayOf(Ljava/lang/String; [Ljava/lang/Object;)Ljava/sql/Array; at aoutomapping.cash.DBCash.loadOREFSFromDB(DBCash.java:261) at aoutomapping.cash.DBCash.<init>(DBCash.java:66) at aoutomapping.cash.DBCash.main(DBCash.java:289)
|
ps.setObject(1, new String[]{"a", "b", "c"}); тоже не работает.
| Код | Exception in thread "main" org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of [Ljava.lang.String;. Use setObject() with an explicit Types value to specify the type to use. at org.postgresql.jdbc2.AbstractJdbc2Statement.setObject(AbstractJdbc2Statement.java:1740) at aoutomapping.cash.DBCash.loadOREFSFromDB(DBCash.java:264) at aoutomapping.cash.DBCash.<init>(DBCash.java:66) at aoutomapping.cash.DBCash.main(DBCash.java:289)
|
передавать в setObject() Types.ARRAY не помогает.
Запихивать параметры в строчку и делать через просто Satement наверно нельзя, строки будут слишком длинные.
Как это можно сделать? |