У меня есть объект области, который содержит результаты вычисления на основе параметров, которые являются свойствами того же объекта области. Я хотел бы удостовериться, что любые параметры времени изменяются пользователем, это повторно вычисляет и сохраняется правильно в базу данных.
Я пытаюсь сделать это с afterInsert (чтобы удостовериться, что вычисление корректно во-первых), и afterUpdate.
Однако, так как мое вычисление пытается изменить сам объект, это не работает - бросок различного в спящем режиме исключения.
Я пытался поместить код afterUpdate в транзакцию, но это не помогло. Я боюсь, что вхожу в круговую зависимость проблемы здесь.
Исключение, которое я получаю прямо сейчас:
org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [esc.scorecard.PropertyScorecard#27]
События GORM разработаны для более простых вариантов использования? Я испытываю желание прийти к заключению, что, изменяя объект Вы посреди сохранения, не способ пойти.
Есть ли причина против использования beforeInsert
и beforeUpdate
вместо afterInsert
и afterUpdate
?
Если нет, переключение на обработчики событий before *
должно решить вашу проблему
Вы используете 1.2.0+?
Если да, то вы можете использовать .withNewSession в закрытии событий, что должно помочь избежать хаоса hibernate.
cheers
Lee