2009-11-17 3 views
1

Пусть следующий код в контроллере Grails:Отключение блокировки для некритичного Grails/Горм домена классы

def action = { 
    ClassName o = ClassName.findByFoo(params.foo) 
    if (o) { 
    o.counter += 1 
    } 
} 

По умолчанию Grails использует оптимистическую блокировку через version колонки добавляется по умолчанию для всех таблиц базы данных Горма. Однако, если достаточно большое количество нескольких одновременных запросов направляются к этому действию оптимистического механизм блокировки сломается за исключением следующего:

org.hibernate.StaleObjectStateException: 
    Row was updated or deleted by another transaction (or unsaved-value mapping was 
    incorrect): [ClassName#id] 

Для объектов предметной области, где не удалось обновить/удалить полностью некритическое I 'd хотел бы отключить механизм блокировки, чтобы исключить StaleObjectStateException. Как мне это достичь?

ответ

5

От mapping DSL docs: вы можете отключить его таким образом:

class Person { 
    .. 
    static mapping = { 
     table 'people' 
     version false 
    } 
} 

Я сомневаюсь, что вы можете отключить его для конкретного вызова.