@Transactional“导致”重复输入错误

时间:2019-06-19 00:09:25

标签: java mysql spring hibernate

我试图更新数据库中的价格。首先,我从API获取新价格,然后删除所有现有价格,然后保存新价格。 “日期”和“符号”的价格受到独特的限制。

@Transactional
public void updateDb(Source source, String symbol){
    List<Price> newPrices = getNewPricesFromApi();
    dailyPriceRepo.deleteBySourceAndSymbol(source, symbol);
    dailyPriceRepo.save(newPrices);
}

我必须在方法上加上@Transactional,因为否则我会收到“无会话错误”。

如果我像上面那样运行代码,则会收到“重复输入密钥”错误。示例:密钥“ UKgfxktfp6jponxxjlva9es09nf”的重复条目“ MMM-1998-01-02-0”

我假设由于@Transactional批注,保存开始时删除过程实际上尚未完成。

我该如何解决?

0 个答案:

没有答案