Ich habe den Haupt-Thread, der Thread # 2 hervorbringt, der die gleiche Hibernate-Sitzung im Haupt-Thread verwendet. Thread # 2 führt nur alle paar Minuten eine "Auswahl 1" aus, um die db-Verbindung aufgrund eines langen laufenden Prozesses vom Hauptthread am Leben zu erhalten. Sobald der Hauptthread mit der Verarbeitung fertig ist, ruft er einen Commit auf, aber ich bekomme den Fehler:
%Vor%Innerhalb des Hauptthreads werden innere Transaktionen erstellt, die erfolgreich festgeschrieben wurden. Es ist nur die äußere Transaktion, die bei der Festschreibung diesen Fehler auslöst. Ich sehe nicht, was den Autocommit Boolean ändern könnte. Bevor ich den zweiten Thread eingeführt habe, um die Verbindung am Leben zu erhalten, ist dieser Fehler nie aufgetreten.
Obwohl ich denke, dass Sie die Art, wie Sie Hibernate verwenden, ernsthaft überdenken sollten, können Sie dieses Problem umgehen, indem Sie dem JDBC-Treiber in seiner URL einen relaxAutoCommit-Parameter hinzufügen.
fand die Antwort in einem Blog , die Lösung zitiert:
%Vor%Wenn wir das Attribut relaxAutoCommit = true in der jdbc URL gesetzt haben, haben wir unser Problem gelöst.
Natürlich ist das Blog in einem anderen Szenario, überspringe einfach den "rewriteBatchedStatements = true" -Teil
Tags und Links multithreading hibernate session spring autocommit