Как получить Hibernate для создания синтаксиса Oracle FOR UPDATE WAIT 10 - PullRequest
0 голосов
/ 16 марта 2011

У меня есть такая строка кода:

final Foo foo = (Foo)session.get( Foo.class, id, LockMode.UPGRADE );

Это генерирует SELECT .. FOR UPDATE.

Однако я готов подождать только 10 секунд, чтобы получить блокировку, и я бы хотел SELECT .. FOR UPDATE WAIT 10. Как я могу получить Hibernate, чтобы сгенерировать это?

Ответы [ 2 ]

3 голосов
/ 23 марта 2011

Ответ заключается в использовании класса LockOptions с SetTimeout() вместо LockMode.

Для этого мы обновились до Hibernate 3.6 только для того, чтобы обнаружить, что он не работает для Oracle.

0 голосов
/ 16 марта 2011

AFAIK, вы не можете.

Но вы можете просто подождать и установить время ожидания транзакции .Это зависит от того, что вы хотите сделать, когда не получите блокировку.В любом случае, когда вы откатываете все назад, это не имеет большого значения.

Другой способ - заблокировать без ожидания и попытаться заблокировать его секунду спустя, до десяти раз.Это не хорошо, но какое-то решение в любом случае.

...