Я следил за документацией grails, в которой говорится, что для пессимистической блокировки я могу сделать так:
def plan = Plan.findWhere(user:user, [lock: true])
так что это блокирует экземпляр плана до тех пор, пока на нем не будет завершено сохранение. Теперь в моем случае я хочу заблокировать сразу несколько планов, например:
def plan = Plan.findAllWhere(user:user, [lock: true])
Я делаю это в службе grails, которая по умолчанию является транзакционной, но строка выше не работает должным образом. Она не блокирует все строки и выдает stale state exception
, если выполняется параллельная транзакция.
Как я могу заблокировать несколько строк при чтении?
Дополнительную информацию см. В соответствующем вопросе: одновременная транзакция в grails, приводящее к исключению устаревшего состояния базы данных