Изменение объекта в AfterInsert / AfterUpdate

У меня есть объект области, который содержит результаты вычисления на основе параметров, которые являются свойствами того же объекта области. Я хотел бы удостовериться, что любые параметры времени изменяются пользователем, это повторно вычисляет и сохраняется правильно в базу данных.

Я пытаюсь сделать это с 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 разработаны для более простых вариантов использования? Я испытываю желание прийти к заключению, что, изменяя объект Вы посреди сохранения, не способ пойти.

5
задан Jean Barmash 4 March 2010 в 20:42
поделиться

2 ответа

Есть ли причина против использования beforeInsert и beforeUpdate вместо afterInsert и afterUpdate ?

Если нет, переключение на обработчики событий before * должно решить вашу проблему

2
ответ дан 14 December 2019 в 19:10
поделиться

Вы используете 1.2.0+?

Если да, то вы можете использовать .withNewSession в закрытии событий, что должно помочь избежать хаоса hibernate.

cheers

Lee

3
ответ дан 14 December 2019 в 19:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: