SELCT ... FOR UPDATE
ha senso solo nel contesto di una transazione gestita, poiché richiede l'eliminazione dei blocchi sulle righe selezionate.
Per impostazione predefinita, JDBC non utilizza una transazione gestita, ne utilizza una creata implicitamente che esegue il commit non appena viene eseguita la query. Questo interromperà la semantica di SELECT ... FOR UPDATE
e il driver JDBC si lamenta.
Per utilizzare una transazione gestita, aggiungi
connection.setAutoCommit(false);
prima di eseguire la query. Successivamente, esegui connection.commit()
.