2016-09-17 8 views
0

HSQLを使用してエンティティに長いテキストを保存する必要がありますが、動作しません。JPAを使用してhsqlにCLOBを正しく保存できません

私は、このオブジェクト

docPart.setId(1); 
docPart.setText("A text that could be large"); 
entityManager.persist(docPart); 

を保存し、代わりに私はこのJDBCClobClientを取得し、この

SELECT text FROM "PUBLIC"."DOCPART" 
text 
======================================= 
[email protected] 

を取得し、テキストのデータベースをチェックインするとここで私のJPAアノテーションは

@Entity 
public class DocPart extends AbstractEntity{ 
....  
    /** 
    * the text of this docPart, exctract from the comment in the odt. 
    */ 
    @Column(columnDefinition = "clob") 
    @Lob 
    private String text; 
.... 
} 

です@ 37c0372cテキストの代わりに "大きい可能性のあるテキスト"

ご存知ですか?

+0

それを永続化するために呼び出されたSQLは何ですか? "entityManager.save(...)"とは何ですか?それを取得するコードとは何ですか? JPAプロバイダとは何ですか? ... –

+0

JPAプロバイダは休止状態ですが、私は間違ってentityManager.persist()です。 DDLは、エンティティの定義によって作成されます。 –

+0

この列定義を使用する場合は、@Column(columnDefinition = item、 "LONGVARCHAR")長いテキストがデータベースに正しく挿入されていますが、LONGVARCHARは移植性がありません。 –

答えて

0

正常に動作していて、データが正しく挿入されているようです。 [email protected]は、データがCLOBに保存されていることを示しています。テキストを取得するには、オブジェクトのgetXXX()メソッドを呼び出します。 CLOBのサイズは、ギガバイト以上になる可能性があります。通常、ClobからReaderオブジェクトを使用してコンテンツを取得します。

+0

ああ大丈夫!私は、GUIの列の内容をチェックするだけでした。私はgetXXXものを試していませんでした。私はJPAを介して取り上げるとうまくいくと思います。私はあなたに知らせようとします。ありがとう。 –

関連する問題