Java SQL lekérdezés paraméterezése

Fórumok

Sziasztok,

Adott egy lekérdezés: SELECT id FROM table WHERE type IN (egész értékek);Az egész értékeket egy Object[] változó tartalmazza, listboxból kiszedve. Az adatbázis postgresql. A programrészben a következőképp történik a lekérdezés végrehajtása:

Object[] types = (Object[]) getTypelistbox().getSelected();
tableRowSet.setCommand("SELECT table.id FROM table WHERE table.column IN (?)");
tableRowSet.setObject(1, Arrays.asList(types), java.sql.Types.INTEGER);
tableRowSet.execute();

A hibaüzenet a következő, amennyiben a megadott értékek 1 és 2:

Exception Details: org.postgresql.util.PSQLException
ERROR: invalid input syntax for integer: "[1, 2]"

Neten nem találtam más megoldást arra, hogy lehet WHERE IN megkötésbe több értéket tömbként paraméterezni. Ha valakinek van működő ötlete, kérem írja meg. Előre is köszönöm.

Hozzászólások


import org.apache.commons.lang.StringUtils;
/* ... */

tableRowSet.setObject(1, StringUtils.join(types, ","), java.sql.Types.STRING); /* integer?? Egy tombre?! */

--
[code]
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.

Köszönöm a választ. Azt tudom, hogy String-ként megy (most is hasonlóképpen csinálom), de integer tömbként akartam átadni a paramétert. Nem csak a rowset-nél, hanem a session bean-ben használt jpql lekérdezéseknél is. A problémával mások is szembesültek (itt és itt), de Toplink alatt nincs rá más megoldás, mivel az IN nem fogad el collectiont paraméterként. (Az eclipselink 2.0 már igen).