JPA事务控制与外键死锁

问题背景

在做app作业一的第二部分时,遇到了问题(自以为是问题,没想到老师是故意让我们发现这是个bug)。

flowchart LR;
A(OrderController::createOrder) --> B(OrderService::createOrder);
B --> C(OrderDao::addOne);
B --> D(OrderItemDao::addList);

如图,在电子书服务系统E-Book中,我们进行订单创建,一个订单order中包含多个订单项orderItem

现在我们要对OrderService::createOrderOrderDao::saveOneOrderItemDao::saveList进行事务传播控制,分别简称三部分为A,B,C。

若A和B设置为REQUIRED,而C设置为REQUIRES_NEW,则会出现死锁问题。

Read more