1、问题

执行 entityManager.flush();  总是报错:javax.persistence.TransactionRequiredException: no transaction is in progress

字面解释是:“没有启动事务”。可是事务是在配置中交给了spring管理了,在方法上加注解 @Transactional就申明了事务的,为何说没有启动事务呢。而且配置中也启动事务注解的扫描了。 <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />。

2、原因

     折腾了很久,分析了很久,也看了一些文章,都没说在关键上,后来有一个文章豁然开朗http://blog.csdn.net/lzw190/article/details/18989301。
 

3、解决

      让springMVC的配置xml和spring容器的配置xml分开,在各自的xml中配置自己该做的事情,不要让springMVC去扫描不该自己管理的注解。

3.1  springMVC部分

3.1.1 web.xml 中 springMVC相关部分

     
   <servlet>  
        <servlet-name>springMVC</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>springMVC</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>  

3.1.2 mvc.xml 文件中关键部分

<!-- 开启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>

3.2  spring容器部分

spring容器需要扫描的注解,放在别的xml中,让spring 的Listener去解读

3.2.1  web.xml 中spring容器关键部分

<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>

3.2.2 spring-core.xml文件关键部分

<!-- 自动加载构建bean -->
<context:component-scan base-package="org.cj" />

         <!--开启spring的事务申明注解支持-->
        <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />

最新文章

  1. 用markdown简化书写
  2. 简述alert和console.log的区别
  3. 利用flash精确定位asp.net的图像热点区域
  4. web.xml配置文件
  5. Spring MVC 数据绑定(四)
  6. 解决:insert Vodafone sim card,open the mms read report,when receive the read report,cann&#39;t download..
  7. xUtils3的简单介绍
  8. Moses 里的参数(未完成)
  9. 3 分钟学会调用 Apache Spark MLlib KMeans
  10. ListView与CheckBox组合实现单选
  11. BZOJ 2253: [2010 Beijing wc]纸箱堆叠
  12. selenium2入门 定位 窗体切换等等 (二)
  13. 编写DAO,通过JdbcTemplate操作数据库的实践
  14. 51nod 1752 哈希统计
  15. 利用QrCode.Net生成二维码 asp.net mvc c#
  16. 谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做?
  17. EmberJS 为什么我偏爱 Ember.js 胜过 Angular 和 React.js
  18. 了解一下,Java 虚拟机
  19. asp.net excel导出去除科学计数法的表示格式
  20. PL/SQL类的应用

热门文章

  1. 微信小程序之触控事件(四)
  2. C#基础系列——小话泛型
  3. Chrome开发者工具详解
  4. 分享录制的正则表达式入门、高阶以及使用 .NET 实现网络爬虫视频教程
  5. [转]MIDI常识20条
  6. 用php去除bom头
  7. R语言读取本地文件注意事项
  8. python 网络编程
  9. MySQL5.0数据库的安装
  10. Yii应用的目录结构和入口脚本