0

JPAを使用して学校向けのプロジェクトを作成しています。オブジェクトを永続化しようとしていますが、修正できないエラーが発生します。entitytransaction の代わりに usertransaction を使用する必要があると読みましたが、このレッスンではあまり情報が得られなかったので、このトピックについてはよくわかりません。このエラーを修正して永続化するにはどうすればよいですか?

これは私が得るエラーです:

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

JTA によってトランザクションが処理されるように、コンテナ管理のエンティティ マネージャでステートレス EJB を使用することをお勧めします。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 に答える