0

我正在使用 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;
    }
}
4

1 回答 1

2

我建议使用带有容器管理实体管理器的无状态 EJB 来处理由 JTA 处理的事务。请参阅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;
    }
}
于 2013-10-18T21:31:40.910 回答