В моем сервисе есть метод с аннотацией @Transactional
.
Внутри я делаю разные вещи с двумя объектами, и в конце я хочу .discard()
изменить один из них, чтобы он не сохранялся в этой транзакции.
Что я делаю, так это отправляю информацию об object2 в мою очередь ActiveMQ, где ее получает слушатель, там проделывается некоторая работа, и в конце она сохраняется в другой транзакции.
Объект 1 должен сохраняться как обычно.
Это, однако, не работает. То, что происходит, - то, что слушатель в моей очереди может .get()
объект, выполнить некоторые изменения на нем и .save()
, прежде чем первая транзакция закончена. Благодаря этому я получаю org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
.
Я выполняю .get()
объектов внутри сервиса. Транзакция сохраняется при выходе из сервиса и возвращении к контроллеру.
Что мне нужно сделать, чтобы Grails не сохранил object2 в основной транзакции?