Spring JpaRepository:delete() 和后续 save() 在同一事务中
2022-09-02 04:38:46
我的实体同时具有自动生成的主键 (id) 和业务键(命名空间)。我需要通过替换旧记录来更新记录。因此,我正在按业务键搜索它,删除它并保存一个新实体。如果每个操作都属于自己的事务,则此方法有效。但是一旦我把它们都放在同一个事务中,到执行 save() 时,delete() 还没有执行,所以我得到了一个约束冲突。
transactionTemplate.execute(status -> {
MyEntity oldEntity = repository.findByNamespace(namespace);
if (oldEntity != null) {
repository.delete(oldEntity);
}
repository.save(newEntity);
return null;
});
我实际上设法通过添加
repository.flush();
但我真的不明白为什么我需要这个冲洗()。