spring+hibernate处理oracle中的blob字段的报错

做毕设用到oracle的bolb字段,网上查了查都说这样就可以了,在我实际使用过程中会发现会报错。

配置情况:

 1、在spring配置文件中添加如下配置:<!-- 用于处理大文本字段 -->

    <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />

    <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">

      <property name="nativeJdbcExtractor"><ref bean="nativeJdbcExtractor" /></property>

    </bean>

2、将oracleLobHfandler注入到sessionfactory中

   <bean id="sessionFactory"

class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<!-- 注入数据源 -->

<property name="dataSource" ref="dataSource"></property>

<property name="lobHandler">

            <ref bean="oracleLobHandler" />

        </property> 

   </bean>

3、在hibernate映射文件中配置如下:

<property name="articlecontent" type="org.springframework.orm.hibernate3.support.BlobByteArrayType"

            column="article_content"

            not-null="true"

            unique="false">

 </property>

4、在model中定义字段如下:

     private byte[] articlecontent;

如果你按照如上配置,会报错如下:

  java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with specified [javax.transaction.TransactionManager] required

at org.springframework.jdbc.support.lob.LobCreatorUtils.registerTransactionSynchronization(LobCreatorUtils.java:79)

at org.springframework.orm.hibernate3.support.AbstractLobType.nullSafeSet(AbstractLobType.java:185)

at org.hibernate.type.CustomType.nullSafeSet(CustomType.java:145)

at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:1826)

at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:1803)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2059)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2427)

at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:51)

at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)

at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)

at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)

at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)

at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)

at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:374)

at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:639)

at com.tyut.blog.dao.hibernate.BlogArticleDaoHibernate.saveArticle(BlogArticleDaoHibernate.java:12)

at com.tyut.blog.mgr.impl.BlogArticleImplMgr.saveArticle(BlogArticleImplMgr.java:22)

at com.tyut.blog.webapp.action.ArticleAction.save(ArticleAction.java:52)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)

at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)

at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)

at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)

at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)

at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)

at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)

at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)

at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:743)

at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)

at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)

at java.lang.Thread.run(Thread.java:595)

相关推荐