问题描述
我正面临 SpringBoot Jpa (2.1.18.RELEASE) 的奇怪行为。
我有一个 sql server 表,在“name”列上有一个唯一的约束。我有这个方法应该删除一条记录并插入另一个同名的记录;这两个操作在一个事务中:
@Transactional(rollbackOn = Exception.class)
public void reinsert(){
classiRepo.deleteById(1); // this object has name = MyCode
classiRepo.save(new Classe("MyCode"));
}
如果我执行此代码,我会出现关于违反唯一约束的错误(可能是因为直到事务结束才将删除提交到数据库):
ERROR i.s.e.m.c.i.ClassiIntegrationController.insertUpdateClassi - org.springframework.dao.DataIntegrityViolationException
奇怪的是,当我更改方法添加一个简单的 findAll() 时,异常消失了:
@Transactional(rollbackOn = Exception.class)
public void reinsert(){
classiRepo.deleteById(1); // this object has name = MyCode
classiRepo.findAll();
classiRepo.save(new Classe("MyCode"));
}
谁能给我解释一下这种行为?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)