我正在使用Hibernate 3.6.10版本并在保存记录(学生)后尝试读取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 !!!的BUG。
请帮助摆脱这个错误..我已尝试过所有相关主题但尚未成功:(
答案 0 :(得分: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());