2011-10-28 16 views
7

Estoy tratando de insertar una matriz en una tabla, pero necesito convertir la lista al tipo de matriz SQL. Estoy usando el método Connection#createArrayOf(), pero recibo una excepción.¿Cómo se crea una matriz SQL a partir de una lista Java?

Necesito pasar un nombre tipo, pero no sé qué es esto y siempre recibo una excepción. La matriz es de VARCHAR.

¿Cómo soluciono esto para insertar la matriz?

El código

Object[] array = new Object[token.getCategories().size()]; 
array = token.getCategories().toArray(); 
pstmTokenInsert.setArray(1, conn.createArrayOf("VARCHAR", array)); 

El 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) 
+0

¿Estás utilizando Oracle? El tipo de matriz SQL depende en gran medida de la base de datos subyacente. – ManuPK

+1

¿Puedes publicar la pila de la Excepción? :) –

+0

@ManuPK PostgreSQL –

Respuesta

18
+0

Gracias, maestro. Me ayudo mucho. Fue un simple error (que me llevó algunas horas), pero no encontré esta información en ninguna parte. Gracias. –

+2

cuando cambio a 'varchar' recibí este error. org.postgresql.util.PSQLException: ERROR: el operador no existe: carácter variable = carácter variable [] Sugerencia: Ningún operador coincide con el nombre y los tipos de argumentos. Es posible que deba agregar modelos explícitos –

+0

@Damith Puede usar = CUALQUIER operador en lugar de IN – JuliuszJ

Cuestiones relacionadas