Предположим, что следующий код в контроллере Grails:
def action = {
ClassName o = ClassName.findByFoo(params.foo)
if (o) {
o.counter += 1
}
}
По умолчанию Grails использует оптимистическую блокировку через столбец version
, добавленный по умолчанию ко всем таблицам базы данных GORM. Однако, если на это действие отправлено достаточно большое количество одновременных запросов, механизм оптимистической блокировки выйдет из строя со следующим исключением:
org.hibernate.StaleObjectStateException:
Row was updated or deleted by another transaction (or unsaved-value mapping was
incorrect): [ClassName#id]
Для объектов домена, где неудачное обновление / удаление совершенно не критично, я бы хотел отключить механизм блокировки, чтобы исключение StaleObjectStateException не вызывалось. Как мне этого добиться?