D>Хибернейт может использовать только средства целевой базы для подобных вещей. Попробуй использовать "... for update nowait" в нативном запросе к ораклу, с хибернейтом не пробовал, но в PRO*C "форапдейт ноу вейт" работает.
Хибернейт прекрасно умеет nowait на Oracle, MS SQL, на других не пробовал (query.setLockMode(...))
Но nowait — это значит "кидать эксепшн сразу же, если наткнулись на строчку, не удовлетворяющую условию". Тогда придётся тащить список id-шников и в цикле по ним
Что касается баз, то MS SQL, кажется, умеет. В оракле, говорят, надо костыли приделывать для этого.