以前转载过一个相同标题的关于这个问题的文章,但是我按他的方法使用时去发生了错误,因此现在我要把我成功的代码发上来.
<beans>
<!-- 配置数据源 -->
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/csss</value>
</property>
<property name="jndiEnvironment">
<props>
<prop key="java.naming.factory.initial">
weblogic.jndi.WLInitialContextFactory
</prop>
<prop key="java.naming.provider.url">
t3://localhost:7001
</prop>
<prop key="java.naming.security.principal">
weblogic
</prop>
<prop key="java.naming.security.credentials">
weblogic
</prop>
</props>
</property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="lobHandler" ref="oracleLobHandler"/>
<property name="mappingResources">
<list>
<!-- 以下是所有的PO映射文件 -->
<value>com/cse/pojo/meeting/Meeting.hbm.xml</value>
</list>
</property>
<!-- 定义Hibernate的SessionFactory的属性 -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
net.sf.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.WebLogicNativeJdbcExtractor"
lazy-init="true"/>
<bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler"
lazy-init="true">
<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/> <!-- 设置本地 Jdbc 对象抽取器 -->
</bean>
<!--事物管理器-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!-- 定义事务拦截器bean -->
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="get*">
PROPAGATION_REQUIRED,readOnly,-OrderException
</prop>
<prop key="save*">
PROPAGATION_REQUIRED,-OrderException
</prop>
<prop key="remove*">
PROPAGATION_REQUIRED,-OrderException
</prop>
<prop key="delete*">
PROPAGATION_REQUIRED,-OrderException
</prop>
<prop key="update*">
PROPAGATION_REQUIRED,-OrderException
</prop>
<prop key="add*">
PROPAGATION_REQUIRED,-OrderException
</prop>
</props>
</property>
</bean>
<!--事务代理工厂-->
<bean id="proxyFactoryBean" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" >
<property name="beanNames">
<value>*Dao,*Service</value>
</property>
<property name="interceptorNames">
<list>
<!-- 可以增加其他的拦截器 -->
<value>transactionInterceptor</value>
</list>
</property>
</bean>
Dao对象
<bean id="meetDao" class="com.cse.meeting.dao.MeetingDao" >
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
<property name="lobHandler" ref="oracleLobHandler"/> <!-- 设置 LOB 处理器 -->
</bean>
<!--pojo配置-->
<hibernate-mapping package="com.cse.pojo.meeting">
<class name="Meeting" table="MEETING" lazy="true" batch-size="10">
<id name="meeting_id" type="long" column="MEETING_ID">
<generator class="sequence">
<param name="sequence">meeting_seq</param>
</generator>
</id>
<property name="subject" type="string" column="MEETING_NAME"></property>
<property name="filepath" type="string" column="FILEPATH"></property>
<property name="summary" type="clob" column="SUMMARY" length="2000"></property>
<property name="publisher" type="string" column="PUBLISHER"></property>
<property name="address" type="string" column="ADDRESS"></property>
<property name="time" type="date" column="TIME"></property>
<many-to-one name="department" column="DEPARTMENT_ID" ></many-to-one>
</class>
</hibernate-mapping>
在Meeting类中summary的属性:private Clob summary;
//添加会议
public void addMeeting(final com.cse.pojo.meeting.Meeting m) {
com.cse.pojo.meeting.Meeting meet = new com.cse.pojo.meeting.Meeting();
meet.setSubject(m.getSubject());
meet.setFilepath(m.getFilepath());
meet.setPublisher(m.getPublisher());
meet.setDepartment(m.getDepartment());
meet.setAddress(m.getAddress());
meet.setTime(m.getTime());
meet.setSummary(Hibernate.createClob(""));
this.getHibernateTemplate().save(meet);
this.getHibernateTemplate().flush();
getHibernateTemplate().refresh(meet, LockMode.UPGRADE);
OracleThinClob clob = (OracleThinClob)meet.getSummary();
char[] buffer = new char[2000];
try{
out = clob.getCharacterOutputStream();
buffer = clob.getChars(2000, 0);
out.write(new String(buffer));
out.flush();
this.getHibernateTemplate().flush();
}catch(Exception e){
log.debug(e);
}
log.debug("采集成功");
}