一:oracle的clob与java的string类型转换:
1.hibernate2.x(Clob,Blob)使用方法
Transaction transaction = session.beginTransaction();
Object obj = new Object();
obj.setContent(Hibernate.createClob(" "));
session.flush();
session.refresh(documentinfo1, LockMode.UPGRADE);
//object.getContent()得到的对象是java.sql.clob类型,hibernate支持强制转换为oracle.sql.CLOB
CLOB clob = (CLOB) object.getContent();
Writer out = clob.getCharacterOutputStream();
out.write(content);
out.close();
transaction.commit();
session.close();
2.Hibernate3.x在LOB(Clob,Blob)操作方面比Hibernate2多了一层封装。
在Hibernate3.x中,将Clob和Blob封装成了SerializableClob和 SerializableBlob两个对象。
代码如下:
2.1:string 写入oracle clob
2.1.1:pojo类:
import java.sql.Clob;
private Clob artContent;
2.1.2:hbm.xml文件
<property name="artContent" type="java.sql.Clob"/>
2.1.3:实现类:
import java.sql.Clob;
import oracle.sql.CLOB;
public class FindByHqlDaoImpl extends HibernateDaoSupport
public class ArticleDaoImpl extends FindByHqlDaoImpl
SessionFactory sf = this.getHibernateTemplate().getSessionFactory();
Session session =sf.openSession();
Transaction transaction = session.beginTransaction();
art.setArtContent(Hibernate.createClob(" "));
session.save(art);
session.flush();
session.refresh(art, LockMode.UPGRADE);
SerializableClob cb = (SerializableClob)art.getArtContent();
java.sql.Clob wrapClob = cb.getWrappedClob();
oracle.sql.CLOB clob = (oracle.sql.CLOB) wrapClob;
Writer writer = clob.getCharacterOutputStream();
writer.write(temp);
writer.close();
transaction.commit();
session.close();
使用注:
session.save(art);必需的,不能用getHibernateTemplate().save();
SerializableClob cb = (SerializableClob)art.getArtContent();
java.sql.Clob wrapClob = cb.getWrappedClob();
必需的,如果直接用java.sql.Clob wrapClob=(oracle.sql.CLOB)artContent;报转换异常
Session session =sf.openSession();session.close();session使用后关闭
java.lang.ClassCastException 错误,提示oracle.sql.CLOB不能强制转换为java.sql.clob时还有一种可能:
oracle 连接的jar包(classes12.jar和ojdbc14.jar)重复用了会报此错误.
2.2:读出oracle 中的clob转换为string:
private boolean imgManagerForAddArt(Clob temp)
{
Reader is = temp.getCharacterStream();
BufferedReader br = new BufferedReader(is);
String s = br.readLine();
StringBuffer sb = new StringBuffer();
while (s != null)
{
// 执行循环将字符串全部取出付值给StringBuffer由StringBuffer转成STRING
sb.append(s);
s = br.readLine();
}
reString = sb.toString();
}
java.sql.clob 类中有reader re = java.sql.clob.getCharacterStream();
oracle.sql.CLOB 类中有Writer writer =(oracle.sql.CLOB) clob.getCharacterOutputStream();
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。