春季 JPA 按特定顺序保存更新



我的弹簧服务中的代码片段

更新现有记录

//Credit Cards
find.getCreditCards().forEach(creditCard -> {
creditCard.setActiveVersion(false);
businessPartnerCreditCardRepository.save(creditCard);
});

然后插入新的 1

//Credit Cards
businessPartner.getCreditCards().forEach(creditCard -> {
creditCard.setVersion(find.getVersion() + 1);
creditCard.setActiveVersion(true);
businessPartnerCreditCardRepository.save(creditCard);
});

问题是,Spring JPA 首先运行 INSERT 语句,然后运行UPDATE,而不是先运行UPDATE然后运行 INSERT。

为什么我需要从更新到插入的某些顺序

存在一个数据库约束,即一次只有 1 条记录处于活动状态。 所以,当 JPA 插入而不更新时.DB大喊大叫和回扣..... :D

任何更新 ?

更新后进行刷新。

您可以使用 JpaRepository 中的saveAndFlush,也可以在存储库中编写自定义方法,在其中注入 EntityManager 并对其执行刷新。

另一种选择是将约束设置为延迟约束,以便仅在事务结束时检查它。

最新更新