【问题标题】:IllegalStateException: Cannot use an EntityTransaction while using JTAIllegalStateException:在使用 JTA 时无法使用 EntityTransaction
【发布时间】:2013-10-18 20:28:05
【问题描述】:

我正在使用 JPA 为学校制作一个项目。我正在尝试保留一个对象,但我遇到了一个我无法修复的错误。我读过我必须使用 usertransaction 而不是 entitytransaction,但是在本课中我们没有得到太多信息,所以我对这个主题知之甚少。如何修复此错误并使其持续存在?

这是我得到的错误:

java.lang.IllegalStateException: 
Exception Description: Cannot use an EntityTransaction while using JTA.

这是我使用的代码:

public class UserServiceImpl implements UserService {
    @PersistenceUnit
    private EntityManagerFactory emf = null;
    private EntityManager em = null;

    @Override
    public User register(User user) {        
        emf = Persistence.createEntityManagerFactory("Project_JavaPU");
        em = emf.createEntityManager();

        em.getTransaction().begin();
        em.persist(user);
        em.flush();
        em.getTransaction().commit();
        em.close();
        return user;
    }
}

【问题讨论】:

    标签: jpa transactions jta illegalstateexception


    【解决方案1】:

    我建议使用带有容器管理实体管理器的无状态 EJB 来处理由 JTA 处理的事务。见this Section in Java EE 6-Tutorial
    与更复杂的应用程序管理方式相比,容器管理只是一种简单的方式,除非您有充分的理由这样做。

    试试这个:

    package containing.package;
    
    import package.of.your.UserService
    
    import java.io.Serializable;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    
    @Stateless
    public class UserServiceImpl implements UserService, Serializable {
        @PersistenceContext
        EntityManager em;
    
        @Override
        public User register(User user) {        
            em.persist(user);
            return user;
        }
    }
    

    【讨论】:

    • 我第一次尝试了这个,但后来我得到了一个 TransactionRequiredException。任何想法如何解决这个问题?
    • 您使用的是 JavaEE 6?我们正在谈论的代码是在 EJB 中吗?请发布完整的课程代码。并在您的下一条评论中使用@Lester 让我了解情况。
    • 现在我更改了我的代码,现在我得到了这个错误:javax.faces.el.E​​valuationException: javax.ejb.EJBException: Transaction aborted
    • @user2066100 请将错误的完整堆栈跟踪添加到您的问题中
    猜你喜欢
    • 2012-06-10
    • 2020-11-22
    • 1970-01-01
    • 2015-05-12
    • 2014-09-07
    • 2014-07-01
    • 2016-07-18
    • 1970-01-01
    • 2011-11-26
    相关资源
    最近更新 更多