Сделайте транзакцию в классе обслуживания Grails, для которого установлен флаг отката:
TransactionAspectSupport
.currentTransactionInfo()
.transactionStatus
.setRollbackOnly()
, что происходит, когда мы возвращаем Контроллеру исключение:
org.springframework.transaction.UnexpectedRollbackException
который мы должны поймать в контроллере (но не в любом из классов обслуживания).Этот код подвергается рефакторингу из предыдущего решения, где вся логика произошла непосредственно в контроллере.Любой совет относительно того, что происходит, когда это исключение вызывается при возврате метода, учитывая, что:
static transactional = true
было установлено во всех классах.Угадай, какие-то тонкие стихи Контролера, происходит волшебство Служения - кто-нибудь знает об этом?На данный момент просто перехват исключительной ситуации как обходной путь, но при этом теряется объект TransactionStatus, который в противном случае был бы возвращен.
Любые мысли, которые высоко ценятся