Clob 字段是以流的形式储存在数据库里。大体的做法就是先把待插入Blob字段的值保存在一个String类型的变量(String str)里面,Hibernate将对象插入数据库之前先把Blob字段初始化一个空值,即Hibernate.createBlob(" "),然后执行save(demo)方法,将数据保存数据库之后,再将Str的值以流的形式写入到blob类型的字段里。代码如下:
持久类对象 product
//设置一个空值
product.setProductFunc(Hibernate.createClob(" ")) ;
Session session = getHibernateTemplate().getSessionFactory().openSession() ;
try{
Connection conn = session.connection() ;
//不设置自动提交,不知道设置了是否出错,有机会试吧!
conn.setAutoCommit(false);
session.saveOrUpdate(product) ;
session.flush() ;
session.refresh(product,LockMode.UPGRADE) ;
}catch(Exception e){}
将clob类型的对象转型成序列化对象
SerializableClob productFunc = (SerializableClob)product.getProductFunc() ;
java.sql.Clob funcclob = productFunc.getWrappedClob() ;
oracle.sql.CLOB funcclob1 = (oracle.sql.CLOB)funcclob ;
try {
Writer out = funcclob1.getCharacterOutputStream();
out.write(product.getProductFuncStr());
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
} catch(SQLException e1){
e1.printStackTrace() ;
}
session.beginTransaction().commit();
session.close() ;
return product ;