JDBC-Commit ist fehlgeschlagen und hat commit aufgerufen, wenn autocommit = true. Multithread-Hibernate-Sitzung, die Autocommit irgendwie ändert?

8

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.

    
czer 10.03.2011, 16:04
quelle

2 Antworten

5

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.

Ссылка

    
jpkrohling 10.03.2011, 16:46
quelle
3

fand die Antwort in einem Blog , die Lösung zitiert:

  

Wenn wir das Attribut relaxAutoCommit = true in der jdbc URL gesetzt haben, haben wir unser Problem gelöst.

%Vor%

Natürlich ist das Blog in einem anderen Szenario, überspringe einfach den "rewriteBatchedStatements = true" -Teil

    
kkzxak47 15.04.2014 15:26
quelle