Oracle SSH Clob的处理

前一段,我们的论坛用到了点问题。一次发帖不能超过2000个中文,然后我们用Clob来处理,在网上找了好多例子,最终可是弄好了。
首先在Form中写两个字段,一个是java.sql.clob类型的,一个是String类型的,前者用来取Clob,后者相当于中介的作用。

*.hbm.xml的配置文件如下
        <property name="content" type="java.sql.Clob" update="true" insert="true">
<column name="CONTENT" />
</property>

然后在DAO层中写入类似的代码



Session session = getHibernateTemplate().getSessionFactory()
.openSession();
Transaction tran = session.beginTransaction();
TmInfo tmInfo = new TmInfo();
tmInfo.setContent(Hibernate.createClob(" "));//这个一定要是空格
tmInfo.setSubject(administratorForm.getSubject());
tmInfo.setPblishTime(new Date());
session.save(tmInfo);
session.flush();
session.refresh(tmInfo, LockMode.UPGRADE);

// 从页面上拿数据到实体
tmInfo.setContentString(administratorForm.getContent());

SerializableClob sc = (SerializableClob) tmInfo.getContent();
Clob wrapclob = sc.getWrappedClob();
CLOB clob = (CLOB) wrapclob;

Writer out;
try {
Writer characterOutputStream = clob.getCharacterOutputStream();//强制转换,否则会报空指针
out = characterOutputStream;
out.write(tmInfo.getContentString());
out.close();
tran.commit();
session.close();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
System.out.println(e.toString());
}


就这样就能存好多字了。

然后取的时候,就


Clob clob = tmInfo.getContent();// 取得Clob的值
if (clob != null) {
String clobString = "";
try {
clobString = clob.getSubString(1, (int) clob.length());// 将Clob类型的值转换成String类型的值
tmInfo.setContentString(clobString);// 通过setter方法,设置String值,然后就可以通过instance.getInfoContentToString()来取值了
} catch (SQLException e) {
e.printStackTrace();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值