`
GhostWolf
  • 浏览: 312885 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring transaction synchronization needs to be active for setting values in iBAT

阅读更多
2011-08-11 11:07:07.576::WARN:  Nested in org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0];   
--- The error occurred in sqlmap/SITE_SqlMap.xml.  
--- The error occurred while applying a parameter map.  
--- Check the SITE.insert-InlineParameterMap.  
--- Check the parameter mapping for the 'schedule' property.  
--- Cause: java.lang.IllegalStateException: Spring transaction synchronization needs to be active for setting values in iBATIS TypeHandlers that delegate to a Spring LobHandler; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in sqlmap/SITE_SqlMap.xml.  
--- The error occurred while applying a parameter map.  
--- Check the SITE.insert-InlineParameterMap.  
--- Check the parameter mapping for the 'schedule' property.  
--- Cause: java.lang.IllegalStateException: Spring transaction synchronization needs to be active for setting values in iBATIS TypeHandlers that delegate to a Spring LobHandler:
java.lang.IllegalStateException: Spring transaction synchronization needs to be active for setting values in iBATIS TypeHandlers that delegate to a Spring LobHandler
	at org.springframework.orm.ibatis.support.AbstractLobTypeHandler.setParameter(AbstractLobTypeHandler.java:95)
	at com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap.setParameter(ParameterMap.java:173)
	at com.ibatis.sqlmap.engine.mapping.parameter.ParameterMap.setParameters(ParameterMap.java:133)
	at com.ibatis.sqlmap.engine.execution.DefaultSqlExecutor.executeUpdate(DefaultSqlExecutor.java:75)
	at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteUpdate(MappedStatement.java:216)
	at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeUpdate(MappedStatement.java:94)
	at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:404)
	at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82)
	at org.springframework.orm.ibatis.SqlMapClientTemplate$8.doInSqlMapClient(SqlMapClientTemplate.java:366)



用了spring3也有一段时间了,但是今天竟然在clob类型上折腾得要死要活的,主要是报了上面的一个异常,这个异常说的是操作clob时要在事务里面管理,否则不给你艹。

但是让我郁闷的是我已经在逻辑类头加了
@Transactional(propagation=Propagation.REQUIRED, rollbackFor=Exception.class) 

这样的事务管理,为什么还是不行呢?狗日的,最后没办法按照网上的一篇文章解决了这个问题,如下:

参考链接:http://blog.csdn.net/cwb1128/article/details/4342141

<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource">
			<ref bean="dataSource" />
		</property>
	</bean>
	<bean id="transactionManagerRootProxy"
		class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
		abstract="true">
		<property name="transactionManager">
			<ref bean="transactionManager" />
		</property>
		<property name="proxyTargetClass">
			<value>false</value>
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="update*">PROPAGATION_REQUIRED,-Exception</prop>
				<prop key="select*">PROPAGATION_REQUIRED,readOnly</prop>
			</props>
		</property>
	</bean>
	<bean id="nativeJdbcExtractor"
		class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"
		lazy-init="true" />
	<bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler"
		lazy-init="true">
		<property name="nativeJdbcExtractor">
			<ref local="nativeJdbcExtractor" />
		</property>
	</bean>
	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation" value="F:/39project/R/src/main/resources/SqlMapConfig.xml"/>
		<property name="dataSource" ref="dataSource" />
		<property name="lobHandler">
			<ref local="oracleLobHandler" />
		</property>
	</bean>
	
	<bean id="siteDao" class="net.health.adr.admin.dao.ibatis.SiteDaoImpl">
	   <property name="sqlMapClient" ref="sqlMapClient"/>
	</bean>
	<bean id="siteProxyDao" parent="transactionManagerRootProxy">
	  <property name="target">
	   <ref bean="siteDao" />
	  </property>
	</bean>




SiteDao siteDao = (SiteDao) ctx.getBean("siteProxyDao");


总算可以插入,深深的插入进去了,艹

但是为什么不能用注解事务配置呢?还有待研究
分享到:
评论
1 楼 GhostWolf 2011-11-17  
另一个导致这异常就是泛型,比如在父类有个insert方法,如果直接插入也会报这个异常,解决方法就是重写这个insert

相关推荐

    spring-transaction-synchronization:Spring事务同步示例

    本示例“spring-transaction-synchronization”主要探讨的是Spring的事务同步机制,这在多线程环境下处理数据库操作时尤其关键。下面将详细阐述相关知识点。 1. **Spring事务管理** - **声明式事务管理**:Spring...

    There is no active transaction解决

    之前一直找原因,最后知道了解决方法,具体请下载源码查看。特别是用到throw的事务中

    springTransaction.rar

    这个名为"springTransaction.rar"的压缩包文件包含了一个关于Spring事务管理的小型示例,旨在演示如何使用Spring的事务传播机制来处理数据库操作,特别是转账功能的实现。 首先,让我们了解一下什么是事务。在...

    Spring 常用 Transaction Annotation

    本篇主要聚焦于"Spring 常用 Transaction Annotation",即声明式事务管理,这是一种更简洁、易于维护的事务控制方式。 首先,Spring的声明式事务管理基于AOP(面向切面编程),它允许我们在不修改业务代码的情况下...

    spring-transaction.jar.zip

    "spring-transaction.jar"正是提供了Spring事务管理的类库,它包含了一系列用于处理事务的接口、类和配置元素,使得开发者能够方便地实现事务控制。 一、Spring 事务管理概述 Spring事务管理分为编程式事务管理和...

    org.springframework.transaction-3.1.2.RELEASE.zip

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.transaction.interceptor.TransactionInterceptor#0': Error setting property values; nested ...

    org.springframework.transaction-3.2.2.RELEASE

    org.springframework.transaction-3.2.2.RELEASE最新版本

    Spring在Transaction事务传播行为种类

    ### Spring中的Transaction事务传播行为种类详解 #### 一、引言 在开发基于Spring框架的应用程序时,事务管理是确保数据一致性的重要手段之一。Spring框架提供了丰富的事务管理功能,其中包括了事务传播行为...

    springtransaction 事务管理

    在实际项目中,`springtransaction`工程可能是包含了一个完整的示例,用于演示如何在MyEclipse环境中配置和使用Spring的事务管理功能。开发者可以通过导入此工程,学习和实践Spring事务管理的配置与使用,从而更好地...

    Spring 实践(Spring in Practice).pdf版本

    Spring was originally conceived as a way to simplify Java Enterprise Edition (JEE) development, but it’s not exactly a simple framework. It’s huge. The core framework is large, and dozens of ...

    org.springframework.transaction-3.1.0.M1.jar包

    Spring中的事务管理问题:org.springframework.transaction-3.1.0.M1.jar包。org.springframework.transaction-3.1.0.M1.jar包。

    org.springframework.transaction-3.1.0.M2

    org.springframework.transaction-3.1.0.M2

    org.springframework.transaction-3.1.0.M1.jar

    org.springframework.transaction-3.1.0.M1.jar

    transaction-springcloud-4.1.2.jar

    分布式事务框架LCN支持springcloud 2.0.5 ,transaction-springcloud-4.1.2.jar

    Implementing Transaction Suspension in Spring

    本篇文章将深入探讨Spring的事务管理机制,特别是如何实现事务的挂起(Transaction Suspension),并展示如何利用Spring的声明式事务管理来处理POJO(Plain Old Java Object)对象,同时使用JTA(Java Transaction ...

    org.springframework.transaction-3.2.4.RELEASE.jar

    org.springframework.transaction-3.2.4.RELEASE.jar,最新版的org.springframework.transaction,Wed Aug 07 16:44:37 GMT+01:00 2013

    Spring in action 2nd

    ### Spring in Action 第二版 —— 详尽解析与学习指南 #### 一、书籍概述 《Spring in Action》第二版是一本深受开发者喜爱的技术书籍,由Craig Walls和Ryan Breidenbach共同撰写,并由Manning出版社出版。这本书...

    Spring攻略(第三版)源代码

    12. Spring Transaction Management 13. Spring Batch 14. Spring NoSQL and Big Data 15. Spring Java Enterprise Services and Remoting Technologies 16. Spring Messaging 17. Spring Integration 18. Spring ...

Global site tag (gtag.js) - Google Analytics