隨筆-204  評論-90  文章-8  trackbacks-0
          1.在HBM里對應CLOB型的字段為:java.sql.Clob,用MyEclipse DataExplorer生成后手動改一下即可,當然POJO也一樣啊,如:
          HBM:
          <
          hibernate-mapping>?
          <class?name="com.chinacars.filterdata.beans.TblWapNews2"?table="TBL_WAP_NEWS2">
          ????????
          <id?name="id"?type="java.lang.Long">
          ????????????
          <column?name="ID"?precision="22"?scale="0"?/>
          ????????
          </id>
          ??????
          <property?name="content"?type="java.sql.Clob">
          ????????????
          <column?name="CONTENT"?/>
          ????????
          </property>

          </class>
          </hibernate-mapping>
          POJO:
          import?java.sql.Clob;
          public?class?test?{
          ???
          private?Clob?content;
          ???
          }

          2.首先要給Clob里寫一個值,如:注意看一下有底色的地方就明白了吧
          package?com.chinacars.filterdata.modidata;

          import?java.lang.reflect.InvocationTargetException;
          import?java.sql.Clob;
          import?java.sql.SQLException;
          import?java.util.List;

          import?org.apache.commons.beanutils.PropertyUtils;
          import?org.apache.commons.logging.Log;
          import?org.apache.commons.logging.LogFactory;
          import?org.hibernate.Hibernate;

          import?com.chinacars.filterdata.beans.TblWapNews1;
          import?com.chinacars.filterdata.beans.TblWapNews2;
          import?com.chinacars.filterdata.dao.WapNews1DAO;
          import?com.chinacars.filterdata.dao.WapNews2DAO;
          import?com.chinacars.filterdata.util.StringProcess;

          public?class?ModiData2?{
          ????
          private?static?final?Log?logger?=?LogFactory.getLog(ModiData2.class);

          ????
          public?static?void?main(String[]?args)?{

          ????????WapNews1DAO?wapNews1DAO?
          =?new?WapNews1DAO();
          ????????WapNews2DAO?wapNews2DAO?
          =?new?WapNews2DAO();

          ????????TblWapNews1?news1?
          =?new?TblWapNews1();
          ????????TblWapNews2?news2?
          =?new?TblWapNews2();

          ????????List?list?
          =?wapNews1DAO.getWapNews();
          ????????Clob?contentClob?
          =?null;
          ????????String?cStr?
          =?"1";
          ????????String?title;
          ????????
          ????????
          for?(int?i?=?0;?i?<?list.size();?i++)?{
          ????????????logger.info(
          "============The?number?:?"?+?i);
          ????????????news1?
          =?(TblWapNews1)?list.get(i);
          ????????????contentClob?
          =?news1.getContent();
          ????????????
          try?{
          ????????????????PropertyUtils.copyProperties(news2,?news1);
          ????????????}
          ?catch?(IllegalAccessException?e)?{
          ????????????????logger.error(e);
          ????????????????e.printStackTrace();
          ????????????}
          ?catch?(InvocationTargetException?e)?{
          ????????????????logger.error(e);
          ????????????????e.printStackTrace();
          ????????????}
          ?catch?(NoSuchMethodException?e)?{
          ????????????????logger.error(e);
          ????????????????e.printStackTrace();
          ????????????}

          ????????????title?
          =?news1.getTitle();
          ????????????
          if(title?!=?null)?{
          ????????????????title?
          =?title.replaceAll("",?"");
          ????????????????news2.setTitle(title);
          ????????????}

          ????????????news2.setContent(Hibernate.createClob(cStr));
          ????????????
          try?{
          ????????????????wapNews2DAO.saveWapNews(news2,?StringProcess
          ????????????????????????.delInvalidChar(contentClob.getSubString(
          1,
          ????????????????????????????????(
          int)?contentClob.length())));
          ????????????????
          ????????????}
          ?catch?(SQLException?e)?{
          ????????????????logger.error(e);
          ????????????????e.printStackTrace();
          ????????????}

          ????????}


          ????}


          }

          3.開始寫入這內容,最主要的是這里,我在這里卡了好久……
          ?? 主是下面紅色的部分,其它的有色部分都能搜到:看下面的代碼吧:^_^
          package?com.chinacars.filterdata.dao;

          import?java.io.Writer;
          import?java.sql.Clob;

          import?oracle.sql.CLOB;

          import?org.apache.commons.logging.Log;
          import?org.apache.commons.logging.LogFactory;
          import?org.hibernate.LockMode;
          import?org.hibernate.Session;
          import?org.hibernate.Transaction;
          import?org.hibernate.lob.SerializableClob;

          import?com.chinacars.filterdata.beans.TblWapNews2;

          public?class?WapNews2DAO?{
          ????
          ????
          private?static?final?Log?logger?=?LogFactory.getLog(WapNews2DAO.class);

          ????
          private?Session?oraSession;

          ????
          private?Transaction?tx;

          ????
          public?boolean?saveWapNews(TblWapNews2?news,?String?content)?{
          ????????
          try?{
          ????????????oraSession?
          =?SessionFactory.currentORASession();
          ????????????tx?
          =?oraSession.beginTransaction();
          ????????????oraSession.save(news);
          ????????????oraSession.flush();
          ????????????oraSession.refresh(news,?LockMode.UPGRADE);
          ????????????
          ????????????
          SerializableClob?clob?
          =?(SerializableClob)?news.getContent();
          ????????????Clob?jClob?
          =?clob.getWrappedClob();
          ????????????CLOB?oClob?
          =
          ?(CLOB)jClob;
          ????????????Writer?wt?
          =
          ?oClob.getCharacterOutputStream();????????????
          ????????????
          //byte[]?bData?=?content.getBytes();

          ????????????wt.write(content);
          ????????????wt.close();
          ????????????oraSession.flush();
          ????????????tx.commit();
          ????????????logger.info(
          "===================??INSERT?OK?");
          ????????}
          ?catch?(Exception?e)?{
          ????????????
          if?(tx?!=?null)
          ????????????????tx.rollback();
          ????????????logger.info(
          "===================??NOT?INSERT?");
          ????????????logger.info(e);
          ????????????e.printStackTrace();
          ????????}
          ?finally?{
          ????????????oraSession.close();
          ????????}

          ????????
          return?true;
          ????}


          }


          哈哈,就寫到這里了,快沒車了……
          有不懂的朋友,發e-mail吧!
          erdosqiao@163.com
          posted on 2006-05-11 18:40 一凡 閱讀(2157) 評論(0)  編輯  收藏 所屬分類: JAVA FRAMEWORK
          主站蜘蛛池模板: 普兰店市| 琼海市| 汶川县| 宽城| 班玛县| 峨山| 沙湾县| 台江县| 安吉县| 西畴县| 济阳县| 故城县| 牟定县| 乌拉特前旗| 遂昌县| 黄龙县| 郓城县| 博湖县| 拜泉县| 教育| 浮梁县| 肥城市| 永平县| 贵港市| 昭平县| 枣阳市| 驻马店市| 淳安县| 济阳县| 曲阳县| 呼图壁县| 英德市| 万年县| 大城县| 五华县| 鸡西市| 祥云县| 东城区| 清远市| 绥江县| 益阳市|