SELCT ... FOR UPDATE
ma sens tylko w kontekście zarządzanej transakcji, ponieważ wymaga odblokowania wybranych wierszy.
Domyślnie JDBC nie korzysta z transakcji zarządzanej, używa niejawnie utworzonej transakcji, która jest zatwierdzana natychmiast po wykonaniu zapytania. Spowoduje to złamanie semantyki SELECT ... FOR UPDATE
, a sterownik JDBC narzeka.
Aby skorzystać z zarządzanej transakcji, dodaj
connection.setAutoCommit(false);
przed wykonaniem zapytania. Następnie wykonaj connection.commit()
.