解决方案 »

  1.   

    默认情况下,spring事务管理中如果碰到RuntimeException,事务就会回滚,你catch一下,看有没有报错
      

  2.   

    捕捉了一下没有异常
    事务还没有开始,在手动加载事务的测试里面,执行到EntityTransaction transaction = em.getTransaction(); 这句话后,后面的语句就没执行了,方法就结束了。
      

  3.   

    捕捉了一下没有异常
    事务还没有开始,在手动加载事务的测试里面,执行到EntityTransaction transaction = em.getTransaction(); 这句话后,后面的语句就没执行了,方法就结束了。
    那你不使用事务,是不是就正确入库了?
    另外,断点跟到这里,em对象是否为空?
      

  4.   

    捕捉了一下没有异常
    事务还没有开始,在手动加载事务的测试里面,执行到EntityTransaction transaction = em.getTransaction(); 这句话后,后面的语句就没执行了,方法就结束了。
    那你不使用事务,是不是就正确入库了?
    另外,断点跟到这里,em对象是否为空?
    em不为空
    不开启事务也能持久化么我刚学JPA,好像必须要在事务中才能进行持久化操作,不然操作无效的
      

  5.   

    捕捉了一下没有异常
    事务还没有开始,在手动加载事务的测试里面,执行到EntityTransaction transaction = em.getTransaction(); 这句话后,后面的语句就没执行了,方法就结束了。
    那你不使用事务,是不是就正确入库了?
    另外,断点跟到这里,em对象是否为空?
    em不为空
    不开启事务也能持久化么我刚学JPA,好像必须要在事务中才能进行持久化操作,不然操作无效的
    太诡异了,表示爱莫能助
      

  6.   


    @PersistenceContext
        private EntityManager em;注解是这么设置的么
      

  7.   

    把DAO类上的注解换成@Repository试下
      

  8.   

    异常捕获此行代码,控制台异常一目了然 EntityTransaction transaction = em.getTransaction(); 
      

  9.   

    我看到你在applicationContext.xml和springMVC-servlet.xml两个xml中都有 <context:component-scan base-package="com.github.Yasenia.flea_school.server"></context:component-scan>,表示都会去扫描所有的类,不知道你在web.xml里面是现在加载的哪一个xml?在首先加载的xml里面,不要去扫描DAO里面的类,不然事务就会失效!
      

  10.   

    谢谢,我已经解决了,在servlet.xml里面只扫描controller,在applicationContext.xml里面扫描其它组件就行了。
      

  11.   

    谢谢,我已经解决了,在servlet.xml里面只扫描controller,在applicationContext.xml里面扫描其它组件就行了。
    学习了,以前也知道是这么用的,但不知道所以然。是否是动态代理惹的祸?
      

  12.   

    以前也遇到这样的问题,贴出来,大家一起学习:
    Spring MVC启动时的配置文件,包含组件扫描、url映射以及设置freeer参数,让spring不扫描带有@Service注解的类。为什么要这样设置?因为servlet-context.xml与service-context.xml不是同时加载,如果不进行这样的设置,那么,spring就会将所有带@Service注解的类都扫描到容器中,等到加载service-context.xml的时候,会因为容器已经存在Service类,使得cglib将不对Service进行代理,直接导致的结果就是在service-context中的事务配置不起作用,发生异常时,无法对数据进行回滚。
      

  13.   

    加try catch 处理一下,看看是什么异常