Spring @Transactional not creating required transaction

后端 未结 3 1286
悲&欢浪女
悲&欢浪女 2021-02-07 11:59

Ok, so I\'ve finally bowed to peer pressure and started using Spring in my web app :-)...

So I\'m trying to get the transaction handling stuff to work, and I just can\'t

相关标签:
3条回答
  • 2021-02-07 12:26

    The problem is likely caused by a combination of you annotating a protected method, and using proxy-target-class="true". That's a bad mix. The transactional proxy generated by Spring will only work properly with public annotated methods, but it won't complain if they're not.

    Try either making the saveOrUpdate() method public or, better yet, define an interface for your DAO, and remove the proxy-target-class="true" setting. This is the safest, most predictable technique.

    0 讨论(0)
  • 2021-02-07 12:28

    In my case:

    Using JPA with Spring MVC - all of my tests and code ran fine without error - symptom was that commits would simply not save to the database no matter what I tried.

    I had to add to my applicationContext.xml and cglib-nodep-2.1_3.jar aopalliance-1.0.jar

    Definitely the fix in my case. Without annotation-driven Spring will not scan for the @Transactional annotation

    0 讨论(0)
  • 2021-02-07 12:50

    The instance of entity manager obtained from EntityManagerFactory.createEntityManager() doesn't participate in Spring-managed transactions.

    The usual way to obtain an entity manager is to inject it using @PersistenceContext-annotated property:

    @PersistenceContext
    public void setEntityManager(EntityManager em) { ... }
    
    0 讨论(0)
提交回复
热议问题