2

Hibernate 3.6.10 バージョンを使用しており、レコード (Student) を保存した後に Clob データ型を読み込もうとしています。「リーダーをリセットできませんでした」というエラーがスローされます

 public class Student implements java.io.Serializable {

    private long studentId;
    private String studentName;
    private Address studentAddress;
    private Clob searchProfileText;

テスト中...最初に学生レコードを保存し、次にそのレコードからsearchProfileTextを再度取得しようとしています

1        student1.setSearchProfileText(clob);
2       session.save(student1);
3        System.out.println("Reading Clob : " + student1.getSearchProfileText().getCharacterStream());

行番号 3 、次の例外が発生しています

java.sql.SQLException: could not reset reader
at org.hibernate.engine.jdbc.ClobProxy.resetIfNeeded(ClobProxy.java:178)

session.flush();次のコードを使用してデータを再読み込み しようとしましたが、同じエラーが発生しました。

session.flush();
session.get(Student.class, student1.getStudentId());
System.out.println("Reading Clob : " + student1.getSearchProfileText().getCharacterStream());

観察 2:

Hibernate 基準を使用して CLOB データを含むレコードをフェッチし、CLOB 列に対して制限を設定しても、レコードのフェッチ後に CLOB データにアクセスできません。3.6.10 Final のバグだと思います!!!

このエラーを取り除くのを手伝ってください..私はこれに関するすべての関連トピックを試しましたが、まだ成功していません:(

4

1 に答える 1

0

getSearchProfileTextからオブジェクトを読み取ってsame object instanceいるため、値を設定した後にポインターが最後にあるため、そうすることができません。たとえば、オブジェクトを読み取る前に、オブジェクトをリロードする必要があると思います

    Serializable  id = session.save(student1);
    //commit the transaction
    Student student = session.get(Student.class, id);
    System.out.println("Reading Clob :: " 
                           + student.getSearchProfileText().getCharacterStream());
于 2012-11-08T17:34:23.693 に答える