Это метод конечной точки API -
@Path("endpoint")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
@Transactional
public List<UserTransaction> cashoutWithFee(@BeanParam XAmount amount, @FormParam("to") String to,
@FormParam("account") String account) Boolean consent, @Context SecurityContext security)
throws NetCardException {
.. Some logic here..
UserTransaction feeTx = session.as(user).withdrawalFee(feeAmount,amount.asAmount());
List<UserTransaction> myList = new ArrayList<UserTransaction>();
myList.add(feeTx);
if(feeTx.getStatus() == TransactionStatus.SUCCESSFUL)
{
UserTransaction utx = session.as(user).withdrawOwnBank(amount.asAmount(), to,
account == null ? null : account.trim(),
ifsc == null ? null : ifsc.trim());
myList.add(utx);
String parentTxnId = utx.getId();
throw new RuntimeException("simulating withdrawal failure");
.. Some more logic here..
}
Метод withdrawalFee()
в другом классе вызывает некоторые другие методы и так далее.В какой-то момент он выполняет какой-то запрос на вставку базы данных.
Метод withdrawOwnBank()
аналогичным образом выполняет вставку некоторой базы данных и вызов внешнего API.
Несмотря на то, что возникает исключение времени выполнения (жестко заданное здесь), яне вижу удаленных вставленных запросов.Любые указатели на то, что я пропускаю?Я новичок в транзакционной функции Spring Boot.