Ich arbeite an einer Klasse, die ein Unternehmen Manager in meinen dao Klassen injiziert aber ich, wenn ich den EntityManager schließe, kann ich es nicht wieder öffnenSo öffnen Sie einen Entity Manager nach einem close(); JAVA EE
Dies ist die Klasse
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();
}
}
Ich habe versucht eM.getTransaction(). Begin(); aber es wirft diese Ausnahme:
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
Ihr Code sagt Ihnen, wie man einen EntityManager erstellt _eM = eMF.createEntityManager(); _ –
Ich möchte nicht jedes Mal einen Entity Manager erstellen, wenn ich eine Transaktion machen möchte, sondern ich möchte nur einen erstellen und öffnen es vor einer Transaktion und schließen Sie es danach. –
erstellen ein EM ist ein EM öffnen! –