2012-08-27 5 views
8

私はpostgreSQL DBからclobを読み込み、変更して書き戻そうとしています。postgreSQLを使用したCLOBへの文字列

私は正常に次のコードを使用してCLOB読むことができました:私は「

Clob newClob = connection.createClob(); 

を:

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

しかし、私が使用して新しいデータで新しいCLOBを作成しようとしています次のエラーが発生しました:

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

さらに、フェッチされたclobを編集しようとすると、

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

私は次のエラーを取得しています:

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

任意のアイデア?

アップデート:ここでテーブル定義は

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

おかげ

答えて

5

getClob()を使用する必要はありませんがあります。 text列に完全に罰金

ResultSet.getString()setString()仕事は、私は、テキストを使用しています

+0

(PostgreSQLは、そう私はあなたがtextを使用していると仮定clobデータ型を持っていません)。 getStringを使用しようとしたとき、私はその意味を理解していない数字を返します(おそらく実際のデータ長ですか?)。 getClobを実行してその文字ストリーム(getCharacterStream)を見ると、DBに保存されているXML全体が取得されます。 –

+0

@BenBracha:あなたは私たちにすべてを見せるわけではありません。 'getString()'は 'text'カラムでうまく動作します。あなたのテーブル定義を表示してください(あなたの質問を編集してください)。 –

+0

上記の更新。 私のアプリケーションで使用されているorg.postgresql.jdbc3.AbstractJdbc3ClobがClobのすべてのset *を実装していないことも確認しました。 どうすればよいですか? また、Hibernateを使用することを追加する必要があります。このテーブルの対応するエンティティには、@ Lobでマークされたcolumn_textフィールドがあります。 –

関連する問題