春季服务中的代码段
更新现有记录
//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
是否有更新?
答案 0 :(得分:1)
更新后刷新。
您可以使用saveAndFlush
from the JpaRepository或在存储库中编写自定义方法,在该存储库中注入EntityManager并对其进行刷新。
另一种选择是将约束设为延迟约束,以便仅在交易结束时对其进行检查。