首页  电脑故障排除  病毒安全 电脑基础知识  硬件知识  软件应用知识  操作系统知识  编程程序

美国编程网址 日本编程网址 法国编程网址 德国编程网址 韩国编程网址 香港编程网址 台湾编程网址

您的位置:首页>>编程程序>>Oracle

利用Hibernate Synchronizer插入oralce.CLOB字段

 
利用Hibernate Synchronizer插入oralce.CLOB字段
表info的映射文件info.xml为:
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD//EN""http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping><class name="src.Info" table="INFO"><idcolumn="INFO_ID"name="Id"type="integer"><generator class="vm"> <!--param name="INFO">info_id</param--> <!--param name="INFO_ID">next_hi_value_column</param--> </generator>
</id><propertycolumn="INFO_CONT"name="InfoCont"not-null="false"type="java.sql.Clob" /><propertycolumn="INFO_AREA"length="100"name="InfoArea"not-null="false"type="string" /><propertycolumn="INFO_DATE"length="7"name="InfoDate"not-null="false"type="date" /></class></hibernate-mapping>
其中红色字体为要映射的oracle.CLOB类型。(在这里将其类型定义为java.sql.Clob类型,如果定义为oracle.CLOB,在运行时,会抛出异常net.sf.hibernate.MappingException: Error reading resource: Info.hbmnet.sf.hibernate.MappingException: Error reading resource: Info.hbm。我也不明白为什么,估计是找不到包,如果那位知道,请告诉我!)
下面是相应的代码片断:
// Load the configuration file _RootDAO.initialize(); // Create a instance of Info represents a new info to be added
Info newInfo = new Info(new Integer(id)); newInfo.setInfoArea(infoArea); newInfo.setInfoDate(Calendar.getInstance().getTime()); InfoDAO infoDao = new InfoDAO();
Session s = _RootDAO.createSession(); Transaction tx = s.beginTransaction();
// Insert a empty value into info_cont first newInfo.setInfoCont(Hibernate.createClob(" ") ); s.save(newInfo); s.flush();
// Lock the relative row s.refresh(newInfo, LockMode.UPGRADE); CLOB clob = (CLOB) newInfo.getInfoCont(); java.io.Writer pw = clob.getCharacterOutputStream(); try { pw.write(infoCont);// WritetheCLOB value intotable pw.close(); } catch(IOException e) { throw new HibernateException(e); } tx.commit(); s.close();
不过这个方法是最笨的一个办法,更好的办法,或者说更透明的方法是通过实现net.sf.hibernate.UserType接口,来自定义处理oracle.CLOB类型的类。这种方法仍然在研究中:)。虽然说这个方法比较落后,但是,最起码现在可以通过hibernate插入oracle.CLOB字段了!

查看上一页  返回分类首页 返回96PC首页  查看下一页

  版权所有:电脑知识大全 网站备案:粤ICP备07031496号  联系我们

友情链接:母婴知识  外贸商务网  娱乐频道  汽车维修知识  股票入门知识  游戏攻略秘籍  本站空间由安信网络提供