2010-04-26 9 views
5

Estoy tratando de usar un tipo de matriz SQL con PostgreSQL 8.4 y el controlador JDBC4.Actualización de ResultSets con tipos de matriz SQL en JDBC/PostgreSQL

Mi columna se define de la siguiente manera:

nicknames   CHARACTER VARYING(255)[] NOT NULL 

y estoy tratando de actualizarlo así:

row.updateArray("nicknames", 
    connection.createArrayOf("CHARACTER VARYING", p.getNicknames().toArray())); 

(p.getNicknames() devuelve un List<String>)

pero estoy viendo :

org.postgresql.util.PSQLException: No se ha podido encontrar el tipo de matriz de servidor para nombre proporcionado VARIADOR DE CARACTERES. en org.postgresql.jdbc4.AbstractJdbc4Connection.createArrayOf (AbstractJdbc4Connection.java:67) en org.postgresql.jdbc4.Jdbc4Connection.createArrayOf (Jdbc4Connection.java:21)

Desafortunadamente, el tipo de matriz Don' t parecen estar bien documentado - no he encontrado mención exactamente cómo hacer esto para PostgreSQL en cualquier lugar :(

Cualquier idea

Respuesta

8

Cambio "VARYING CARÁCTER" a "varchar" La línea de comandos psql?. el cliente acepta el nombre de tipo "CARACTER VARYING", pero el controlador JDBC no no es

La fuente para org.postgresql.jdbc2.TypeInfoCache contiene una lista de nombres de tipos aceptados.

Considere parte del contrato de redacción ambigua-para createArrayOf():

El typeName es un nombre-base de datos específica que puede ser el nombre de un built-in tipo, un tipo definido por el usuario o un estándar SQL tipo compatible con esta base de datos.

Siempre he supuesto que los ejecutores de controladores interpretan las frases "nombre de base de datos" y "compatible con esta base de datos" para significar "aceptar lo que quiera". Pero tal vez podrías presentar esto como un error en contra del controlador JDBC de Postgres.

Buena suerte.

+0

Ach, tienes razón. Supuse que "específico de la base de datos" significaba "lo que usa la BD" que, como usted señala, es incorrecto. También vale la pena señalar que * parece * ser sensible a mayúsculas y minúsculas, a diferencia de casi todo lo demás. ¡Gracias! –

Cuestiones relacionadas