Я последовал за Grails documenation он говорит, что делать пессимистичные блокировки можно сделать так:пессимистичные блокировки: блокировка объект базы данных Grails
def plan = Plan.findWhere(user:user, [lock: true])
так это блокирует экземпляр плана до сохранения не будет закончена на it.Now дюйма мой случай я хочу зафиксировать несколько планов одновременно, как это:
def plan = Plan.findAllWhere(user:user, [lock: true])
Я делаю это в Grails службы, которые являются транзакционными по умолчанию, но выше линии не работает, как expected.It не блокирует все строки и броски stale state exception
, если одновременная транзакция является перфорированной ormed.
Как заблокировать несколько строк при чтении?
Пожалуйста, см связанный вопрос для получения дополнительной информации: concurrent transaction in grails resulting in database stale state exception
это работает для вас, потому что вы получите только одну строку, делая ' Process.get (job.process.id) '. Пожалуйста, просмотрите связанный вопрос, который детализирует, почему я не могу использовать такое решение, как yours.Thanks – vishesh