У меня есть метод, где я пытаюсь изменить какой-либо объект, также в этом методе я хочу сохранить информацию о транзакции. Когда возникло какое-либо исключение, я хочу отменить сохранение объекта, но все же хочу сохранить транзакцию. Итак, как сделать один репозиторий для транзакции сущностей, но репозиторий для транзакций нет?Как сделать один репозиторий JPA Transactional, а другой нет?
Там код из репозитория
@Override
@Transactional(noRollbackFor=NotEnoughAmountInAccountException.class)
<T extends Transaction> T save(T transaction);
, но это не помогает. Сохранение транзакции, размещенной в финальном блоке.
ОБНОВЛЕНИЕ
Я решил его с помощью АОП. Я создаю объект Transaction в совете по аспектам и сохраняю его здесь, из транзакции JPA.
Пожалуйста, задайте вопрос, покажите нам исключения след ... –
Я добавил вопрос. Нет трассировки стека, только транзакция также не сохраняется из-за откат. – VDanyliuk
Что вы можете сделать, так это оставить классы репозитория так, как они есть, и иметь методы обслуживания с различными транзакционными поведением, чтобы при вызове вашего метода он вызывал другие методы обслуживания с различным транзакционным поведением (например, Propagation.REQUIRES_NEW). Таким образом, вы можете сохранить «транзакцию», а в случае любого неконтролируемого исключения или с внешней транзакцией «NotEnoughAmountInAccountException» может быть отменена внешняя транзакция, но внутренняя транзакция с новым поведением все равно будет выполнена. – Bunti