SSH中操作Oracle Clob类型字段
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
??? <class name="kymanage.kybasic.vo.KybasicInfo" table="KYBASIC_INFO" schema="BL">
??????? <id name="infoId" type="java.lang.Long">
??????????? <column name="INFO_ID" precision="22" scale="0" />
??????????? <generator type="java.lang.String">
??????????? <column name="INFO_TITLE" length="100" />
??????? </property>
??????? <property name="infoKeyword" type="java.lang.String">
??????????? <column name="INFO_KEYWORD" length="100" />
??????? </property>
??????? <!--注意:这里要将默认生成的String类型改成java.sql.Clob-->
??????? <property name="infoContent" type="java.sql.Clob">
??????????? <column name="INFO_CONTENT" />
??????? </property>
??????? <property name="infoTop" type="java.lang.Long">
??????????? <column name="INFO_TOP" precision="38" scale="0" />
??????? </property>
??????? <property name="userSno" type="java.lang.String">
??????????? <column name="USER_SNO" length="100" />
??????? </property>
??????? <property name="infoTime" type="java.util.Date">
??????????? <column name="INFO_TIME" length="7" />
??????? </property>
??????? <property name="icId" type="java.lang.Long">
??????????? <column name="IC_ID" precision="38" scale="0" />
??????? </property>
??????? <property name="infoStandby1" type="java.lang.String">
??????????? <column name="INFO_STANDBY1" length="100" />
??????? </property>
??????? <property name="infoStandby2" type="java.lang.String">
??????????? <column name="INFO_STANDBY2" length="100" />
??????? </property>
??????? <property name="infoStandby3" type="java.lang.String">
??????????? <column name="INFO_STANDBY3" length="100" />
??????? </property>
??????? <property name="infoStandby4" type="java.lang.Long">
??????????? <column name="INFO_STANDBY4" precision="38" scale="0" />
??????? </property>
??????? <property name="infoStandby5" type="java.lang.Long">
??????????? <column name="INFO_STANDBY5" precision="22" scale="0" />
??????? </property>
??????? <property name="infoStandby6" type="java.lang.Long">
??????????? <column name="INFO_STANDBY6" precision="22" scale="0" />
??????? </property>
??? </class>
</hibernate-mapping>
??? session.save(kybasicInfo);
??? session.flush();//强制执行
??? session.refresh(kybasicInfo,LockMode.UPGRADE);
??? session.update(persistentInstance);
??? session.flush();
??? session.refresh(persistentInstance,LockMode.UPGRADE);
??? SerializableClob sc=(SerializableClob)persistentInstance.getInfoContent();
??? Clob wrapclob=sc.getWrappedClob();
??? CLOB clob=(CLOB)wrapclob;
??? Writer writer=clob.getCharacterOutputStream();
??? writer.write(persistentInstance.getInfoContentToString());
??? writer.close();
??? session.update(persistentInstance);
??? tran.commit();
?? } catch (RuntimeException re) {
??? throw re;
?? } catch (SQLException e) {
??? e.printStackTrace();
?? } catch (IOException e) {
??? e.printStackTrace();
?? }
}
//读取Clob字段值
public KybasicInfo findById(java.lang.Long id) {
?? try {
??? KybasicInfo instance = (KybasicInfo) getHibernateTemplate().get(
????? "kymanage.kybasic.vo.KybasicInfo", id);
??? Clob clob=instance.getInfoContent();//取得Clob的值
??? if(clob!=null){
???? String clobString="";
???? try {
????? clobString = clob.getSubString(1, (int)clob.length());//将Clob类型的值转换成String类型的值
????? instance.setInfoContentToString(clobString);//通过setter方法,设置String值,然后就可以通过instance.getInfoContentToString()来取值了
???? } catch (SQLException e) {
????? e.printStackTrace();
???? }
??? }
??? return instance;
?? } catch (RuntimeException re) {
??? throw re;
?? }
}
public static KybasicInfoDAOImpl getFromApplicationContext(
??? ApplicationContext ctx) {
?? return (KybasicInfoDAOImpl) ctx.getBean("KybasicInfoDAO");
}
}