Repository.deleteAll在带有REQUIRED和REQUIRED_NEW传播的事务中不起作用

时间:2019-05-07 19:50:11

标签: hibernate spring-boot repository spring-transactions propagation

问题的背景。在这种情况下有一个Product实体和一个ProductElement实体。产品可能具有多个ProductElements。我想删除所有现有的ProductElement实体,并保存所有已编辑的ProductElement实体。我正在使用以下服务层方法。

<button onclick="clean()">Clear</button><br>
<input type="text" value="some"><br>
<input type="text" value="short"><br>
<input type="text" value="text"><br>

问题是,当我使用Propagation.REQUIRED或Propagation.REQUIRED_NEW时,调用deleteAll( org.springframework.stereotype.Repository )方法不会影响(即:我同时拥有以前的和新的数据库中的ProductElements)。但是当我使用Propagation.SUPPORTS时,我得到了首选的行为(即:ProductElements的旧记录被删除,新记录被添加到数据库中)。

我检查了正在执行的sql查询。使用REQUIRED和REQUIRED_NEW时,在使用SUPPORT的地方不会显示删除SQL查询。在控制台上显示删除SQL查询。

有人可以解释这种行为的原因吗?

0 个答案:

没有答案