oracle数据库当需要存入大数据量(大于4000)时,varchar2不够用,可以使用clob,本文描述clob怎么和Hibernate一起使用。
2.数据库驱动为10g的驱动,就可以像操作String一样操作CLob了
HIBERNATE映射CLOB字段写为:
<property name="content" type="text">
<column name="CONTENT" />
</property>
相应的VO持久化类属性为String
数据库表为Clob content
2.1 完成表、实体、映射配置之后如果报错 ‘请求的转换无效' 可能是 ojdbc.jar的版本问题更换为 ojdbc14之后问题解决。
2.2 更换为ojdbc14.jar之后如果报错 java.sql.SQLException: 不支持的特性 可能是oracle14.jar的版本问题 经测更换为更高版本之后问题解决
3、如果为较早的版本数据库驱动 可以使用如下办法
写操作:
try
{
hdao.beginTransaction();
hdao.save(resume);
hdao.getSession().flush();
hdao.getSession().refresh(resume,LockMode.UPGRADE);
SerializableClob slob = (SerializableClob)resume.getContent();
Clob wrapclob = slob.getWrappedClob();
CLOB clob = (CLOB)wrapclob;
Writer pw = clob.getCharacterOutputStream();
//content为要保存的内容
pw.write(content);
pw.close();
hdao.endTransaction();
return true;
}
catch(Exception e)
{
log.error("保存文件出错!);
log.error(e);
e.printStackTrace();
return false;
}
读操作:
Clob clob = resume.getContent();
String content = "";
if(clob!= null)
{
content = clob.getSubString(1, (int)clob.length());
}