Hibernate + пропуск залоченных строк
От: and_hom  
Дата: 25.01.08 09:56
Оценка:
Здравствуйте!

Есть мегапроблема. Не уверен, что она вообще решаема, но всё же =)

Есть таблица, например

A | B
-------
1 | 4
1 | 2

Есть несколько потоков. Все они одинаковые.

1-й поток в Hibernate выполнил блокирующий select 1-й записи по условию where a=1.(maxResult(1),LockMode.UPGRADE)
Можно ли сделать так, чтобы второй поток не ждал 1-ю строку а искал дальше по a=1.

То есть, если привести на оракловом sql аналог (или посмотреть output хибернейта), то будет что-то вроде

1-й поток: select * from tab where a=1 and rownum<2 for update
2-й поток на тот же запрос должен не висеть и ждать и не падать, а искать следующую свободную запись.
То есть пролетать мимо блокировки вообще.


Или это только программно делается через LockMode.UPGRADE_NOWAIT и отлов эксепшнов? И не долго ли по времени будет получение ошибки из базы, кидание эксепшна по этому поводу итд?

Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.