执行 entityManager.flush(); 总是报错:javax.persistence.TransactionRequiredException: no transaction is in progress
字面解释是:“没有启动事务”。可是事务是在配置中交给了spring管理了,在方法上加注解 @Transactional就申明了事务的,为何说没有启动事务呢。而且配置中也启动事务注解的扫描了。 <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />。
<!-- 开启springMVC注解支持 --> <mvc:annotation-driven /> <mvc:default-servlet-handler/> <!-- 扫描Controller --> <context:component-scan base-package="org.cj.controller"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/> </context:component-scan>
spring容器需要扫描的注解,放在别的xml中,让spring 的Listener去解读
<context-param><param-name>contextConfigLocation</param-name><param-value> <!--说明: 需要让spring 容器解读的配置,放在spring-开头的xml文件中 --> /WEB-INF/spring-*.xml </param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>
<!-- 自动加载构建bean --><context:component-scan base-package="org.cj" /> <!--开启spring的事务申明注解支持--> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
转载于:https://www.cnblogs.com/gmq-sh/p/6016590.html