日期:2014-05-20  浏览次数:20753 次

SpringMVC+Hibernate的事物问题
 程序运行时报的错误!!

Existing transaction found for transaction marked with propagation 'never'

执行到下面这句话报错:

List<OptParameter> optParameters = (List<OptParameter>) this.getOptParameterService().findByProperty(new OptParameter());

希望有知情的帮忙指点一下啊!感激不尽啊!! 
------解决方案--------------------
错误写的也太简练了吧
------解决方案--------------------
引用:
错误写的也太简练了吧
关键是有人能看得懂也解决了!! 我的解决方法是:使用下面加红线的配置方法搞定的。

对于特定的方法或方法命名模式,代理的具体事务行为由事务属性驱动,如下面的例子所示:
<prop key="insert*">
 ROPAGATION_REQUIRED, ISOLATION_READ_COMMITTED
</prop>
key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。有以下选项可供使用:
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
前六个策略类似于EJB CMT,第七个(PROPAGATION_NESTED)是Spring所提供的一个特殊变量。
它要求事务管理器或者使用JDBC 3.0 Savepoint API提供嵌套事务行为(如Spring的DataSourceTransactionManager)。