这是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的事务功能的新手。