Sie haben wahrscheinlich mit einer Transaktion begonnen und versuchen, eine weitere zu beginnen, ohne die vorherige übertragen oder zurückgesetzt zu haben. Das Idiom bei der Verwendung der programmatischen Transaktionsabgrenzung ist das folgende:
%Vor%Dies ist umständlich und fehleranfällig, und das ist einer der Gründe, warum die Verwendung von EJBs oder Spring für deklarative Transaktionen so nützlich ist.
Zuerst sollten Sie die HibernateProperties, hibernate.current_session_context_class,
injizieren %Vor%Dann können Sie getCurrentSession () verwenden, um die CurrentSession abzurufen.
%Vor%Ich habe das gleiche Problem vorher. Erster Lauf:
%Vor%wenn Sie etwas abfragen mit:
%Vor% die gleiche Ausnahme wird in der zweiten beginTranscation
ausgelöst. Ich habe es mit
statt
%Vor%sowohl in Abfrage und speichern.
Was Sie hier gemacht haben:
%Vor%versucht tatsächlich, eine offene Sitzung zu verwenden, ohne sie zu schließen.
Es ist mir passiert und ich hatte das gleiche Problem, und was ich getan habe ist:
%Vor%und es wurde nicht "Hibernate Nested Transaction Not Supported Error" erneut ausgelöst ...
Versuchen Sie schließlich, Ihre Hibernate-Sitzung wie folgt zu schließen:
%Vor%Ich löse dieses Problem, indem ich verschiedene Sitzungen mit
erstelle %Vor%diese Zeile "session.beginTransaction ();" verhindern Sie mehrere Transaktionen, entfernen Sie diese Zeile und versuchen Sie es, weil in Select-Abfrage es nicht notwendig ist, aber es Code funktioniert nicht nach dem Entfernen dieser dann am Ende dieses Codes hinzufügen "session.rollback ();".