@Transactional不起作用,而DefaultTransactionDefinition有效

时间:2018-11-16 06:56:59

标签: spring jpa

我将我的应用程序从Spring3升级到Spring4。在我现有的应用程序中,我们使用OpenSessionInViewInterceptor来创建事务和新请求。 现在,我也在使用JPA,因此即使我使用OpenEntityManagerInViewInterceptor也不会将事务与之关联。因此,我不得不在所有控制器方法中手动添加事务。

由于遗留代码,控制器类具有大量业务逻辑,而不是将其正确分配到服务层。 现在,如果我在控制器方法上放置@Transctional批注,则它不起作用,而如果我通过DefaultTransactionDefinition使用手动交易,则它可以正常工作。 另外,如果我将控制器方法的业务逻辑删除到服务层,并将@Transactional批注放入服务层,那么它也可以正常工作。但是这些更改是乏味的,并且我的应用程序很大,所以无法做到。 请告诉我为什么@Transactional在我的情况下不起作用,如果将它放在控制器中,应该如何使它起作用。 我没有使用AspectJ进行事务管理。

尝试的方法:

  1. 两个地方的代码:dispatcher-servlet.xml和appliacationContext.xml中的代码,但控制器事务仍然失败。
  2. 将用于urlMapping的bean移动到applicationContext.xml中,但仍然失败。

0 个答案:

没有答案