SELCT ... FOR UPDATE
är bara vettigt i samband med en hanterad transaktion, eftersom den kräver att lås tas ut på de valda raderna.
Som standard använder JDBC inte en hanterad transaktion, den använder en implicit skapad transaktion som commit så snart frågan exekveras. Detta kommer att bryta semantiken för SELECT ... FOR UPDATE
, och JDBC-drivrutinen klagar.
För att använda en hanterad transaktion, lägg till
connection.setAutoCommit(false);
innan du kör frågan. Efteråt, kör connection.commit()
.