SELCT ... FOR UPDATE
macht nur im Zusammenhang mit einer verwalteten Transaktion Sinn, da die ausgewählten Zeilen gesperrt werden müssen.
Standardmäßig verwendet JDBC keine verwaltete Transaktion, sondern eine implizit erstellte Transaktion, die festgeschrieben wird, sobald die Abfrage ausgeführt wird. Dadurch wird die Semantik von SELECT ... FOR UPDATE
unterbrochen , und der JDBC-Treiber beschwert sich.
Um eine verwaltete Transaktion zu verwenden, fügen Sie
hinzuconnection.setAutoCommit(false);
bevor Sie die Abfrage ausführen. Führen Sie anschließend connection.commit()
aus .