Когда EntityManager.find()
не может заблокировать строку, генерируется исключение. Вот один из моих журналов, чтобы доказать это. В моем случае он пытается прочитать уже заблокированную запись и не работает через 20 секунд (OpenJPA 1.2.2 + Derby 10.6):
2011-10-14T16:33:22.882 [RemoteParameterStatusListenerInternalContainer-2] ERROR [c.v.r.r.i.g.RemoteParameterStatusInternalGatewayBean] - Exception in [...] org.apache.openjpa.persistence.OptimisticLockException: Unable to obtain an object lock on "DERBY SQL error: SQLCODE: -1, SQLSTATE: 40001, SQLERRMC: Lock : ROW, PRODUCTSTATUS, (389,56)
Waiting XID : {225252, S} [...], [query here]
Granted XID : {225234, X}
Lock : ROW, PRODUCTSTATUS, (389,57)
Waiting XID : {225234, S} [...]