Да приемем следния код в 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. Как да постигна това?