Откат запросов в базовых методах не происходит в RuntimeException, генерируемом из вызывающего метода, который аннотирован @Transactional - PullRequest
0 голосов
/ 25 октября 2018

Это метод конечной точки 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.

...