Oracle
 sql >> Datenbank >  >> RDS >> Oracle

session/entitymanager ist geschlossen

Sie dürfen die Session nicht verwenden und Transaktion als Klassenmitglied deines dao so. Session/EntityManager von der Arbeitseinheit abhängig sein sollen, sind sie nicht Thread-sicher.

In Ihrem aktuellen Zustand, da Spring DI Beans als Singleton erstellt, überschreibt der zweite, wenn zwei Threads das Dao gleichzeitig verwenden, beide Session und Transaktion Mitglieder, weshalb ich annehme, dass Sie die IllegalStateExcepion erhalten.

Sie müssen sie Thread-bezogen machen, indem Sie sie entweder als Variablen in Methoden verwenden oder, wenn Sie die spezielle Methode von Hibernate nicht benötigen, eine vollständige JPA-Konfiguration in Spring wählen und @PersistenceContext/@PersistenceUnit das Framework sich mit diesem Problem befassen zu lassen.