2012-08-27 35 views
8

Estoy tratando de leer un clob de DB postgreSQL, cambiarlo y volver a escribirlo.Cadena a CLOB con postgreSQL

que era capaz de leer el CLOB con éxito utilizando el siguiente código:

PreparedStatement statement = connection.prepareStatement("SELECT clob_column from data where id = 1"); 
ResultSet executeQuery = statement.executeQuery(); 
executeQuery.next() 
Clob fetchedClob = executeQuery.getClob("clob_column"); 

Pero cuando estoy tratando de crear un nuevo CLOB con los nuevos datos usando:

Clob newClob = connection.createClob(); 

I' m consiguiendo el error siguiente:

java.lang.AbstractMethodError: com.mchange.v2.c3p0.impl.NewProxyConnection.createClob()Ljava/sql/Clob; 

Por otra parte, si intento acaba de editar el CLOB exagerado, usando:

fetchedClob.setString(0, "new string"); 

Estoy recibiendo el siguiente error:

Method org.postgresql.jdbc4.Jdbc4Clob.setString(long,str) is not yet implemented. 

Alguna idea?

Actualización: aquí es la definición de la tabla

CREATE TABLE data ( id bigint NOT NULL, clob_column text,);

Gracias

Respuesta

5

No hay necesidad de utilizar getClob().

ResultSet.getString() y setString() trabajo perfectamente bien en text columnas (PostgreSQL no tiene un tipo de datos clob así que supongo que está utilizando text)

+0

estoy usando texto. Cuando traté de usar getString obtengo un número que no entiendo su significado (¿quizás la longitud real de los datos?). Solo cuando obtengoClob y miro su flujo de caracteres (getCharacterStream) obtengo el XML completo que se guarda en el DB. –

+0

@BenBracha: Entonces no nos estás mostrando todo. 'getString()' definitivamente funciona bien con 'text'columns. Por favor, muéstrenos la definición de su tabla (edite su pregunta). –

+0

Actualizado anteriormente. Ahora también veo que org.postgresql.jdbc3.AbstractJdbc3Clob que usa mi aplicación no implementa todo el conjunto * para Clob. ¿Qué debo hacer? También debo agregar que usamos Hibernate, y la entidad correspondiente para esta tabla tiene el campo column_text marcado con @Lob –