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 .