SELCT ... FOR UPDATE
има смисъл само в контекста на управлявана транзакция, тъй като изисква премахване на заключвания на избраните редове.
По подразбиране JDBC не използва управлявана транзакция, а използва имплицитно създадена такава, която се ангажира веднага щом заявката бъде изпълнена. Това ще наруши семантиката на SELECT ... FOR UPDATE
и JDBC драйверът се оплаква.
За да използвате управлявана транзакция, добавете
connection.setAutoCommit(false);
преди да изпълните заявката. След това изпълнете connection.commit()
.