J'essaie d'insérer un tableau dans une table, mais j'ai besoin de convertir la liste au type de tableau SQL. J'utilise la méthode Connection#createArrayOf()
, mais je reçois une exception.Comment créer un tableau SQL à partir d'une liste Java?
Je dois passer un nom de type, mais je ne sais pas ce que c'est et je reçois toujours une exception. Le tableau provient de VARCHAR.
Comment résoudre ceci pour insérer le tableau?
Le code
Object[] array = new Object[token.getCategories().size()];
array = token.getCategories().toArray();
pstmTokenInsert.setArray(1, conn.createArrayOf("VARCHAR", array));
Le stacktrace
org.postgresql.util.PSQLException: Could not find array type for data type VARCHAR
at org.postgresql.jdbc4.AbstractJdbc4Connection.createArrayOf(AbstractJdbc4Connection.java:73)
at org.postgresql.jdbc4.Jdbc4Connection.createArrayOf(Jdbc4Connection.java:21)
at org.apache.commons.dbcp.DelegatingConnection.createArrayOf(DelegatingConnection.java:560)
at br.ifsp.da.data.TokenDAO.insertTokens(TokenDAO.java:37)
at br.ifsp.da.data.ProcessedPageInserter.loopInsertion(ProcessedPageInserter.java:44)
at br.ifsp.da.data.ProcessedPageInserter.call(ProcessedPageInserter.java:27)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Utilisez-vous Oracle? Le type de tableau SQL dépend fortement de la base de données sous-jacente. – ManuPK
Pouvez-vous publier la pile de l'exception? :) –
@ManuPK PostgreSQL –