Spring JPA按特定顺序保存更新

时间:2018-08-27 10:19:17

标签: spring-data-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 然后运行插入

为什么我需要从UPDATE到INSERT的特定顺序

存在数据库约束,一次只能激活1条记录。因此,当JPA插入而没有更新时.. DB喊叫并回弹到.....:D

是否有更新?

1 个答案:

答案 0 :(得分:1)

更新后刷新。

您可以使用saveAndFlush from the JpaRepository或在存储库中编写自定义方法,在该存储库中注入EntityManager并对其进行刷新。

另一种选择是将约束设为延迟约束,以便仅在交易结束时对其进行检查。