0
私は私のDAOクラス でエンティティマネージャを注入クラスに取り組んでいるが、私はエンティティマネージャを閉じたとき、私は私がこれはクラスclose()の後にエンティティマネージャを開く方法。 JAVA EEは
public class EMinjector {
public static EntityManagerFactory eMF;
public static EntityManager eM;
static {
eMF = Persistence.createEntityManagerFactory("persistenceUnit");
eM = eMF.createEntityManager();
}
public static EntityManager getEM(){
if (eM.getTransaction().isActive()==false)
//here where I want to open eM
return eM;
}
public static void closeEM() {
eM.getTransaction().commit();
eM.close();
}
}
ある
再びそれを開くことができません
私はeM.getTransaction()を試しました。begin();
Stacktraces
java.lang.IllegalStateException: EntityManager is closed
org.hibernate.jpa.internal.EntityManagerImpl.checkOpen(EntityManagerImpl.java:97)
org.hibernate.jpa.internal.EntityManagerImpl.checkOpen(EntityManagerImpl.java:88)
org.hibernate.jpa.internal.EntityManagerImpl.getSession(EntityManagerImpl.java:103)
org.hibernate.jpa.internal.TransactionImpl.getSession(TransactionImpl.java:35)
org.hibernate.jpa.internal.TransactionImpl.begin(TransactionImpl.java:45)
com.iticsys.GBO.dao.EMinjector.getEM(EMinjector.java:21)
// line 21 is where I pointed before
あなたのコードは、EntityManagerの作成方法を教えてくれます_eM = eMF.createEntityManager(); _ –
トランザクションを実行するたびにエンティティマネージャを作成するのではなく、ただ作成して開きたいそれはトランザクションの前にそれを閉じてください。 –
EMを作成していますEMを開いています! –