Предположим, что в контроллере 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 не генерировалось. Как мне этого добиться?