一:oracle的clob與java的string類型轉(zhuǎn)換:
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()得到的對(duì)象是java.sql.clob類型,hibernate支持強(qiáng)制轉(zhuǎn)換為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兩個(gè)對(duì)象。
代碼如下:
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:實(shí)現(xiàn)類:
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;報(bào)轉(zhuǎn)換異常
Session session =sf.openSession();session.close();session使用后關(guān)閉
java.lang.ClassCastException 錯(cuò)誤,提示oracle.sql.CLOB不能強(qiáng)制轉(zhuǎn)換為java.sql.clob時(shí)還有一種可能:
oracle 連接的jar包(classes12.jar和ojdbc14.jar)重復(fù)用了會(huì)報(bào)此錯(cuò)誤.
2.2:讀出oracle 中的clob轉(zhuǎn)換為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)
{
// 執(zhí)行循環(huán)將字符串全部取出付值給StringBuffer由StringBuffer轉(zhuǎn)成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();
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。