gpt4 book ai didi

java - Spring 数据 : DeleteAll and Insert in same transaction

转载 作者:行者123 更新时间:2023-12-04 01:34:48 25 4
gpt4 key购买 nike

我正在尝试使用 hibernate (Spring JPA)实现以下 native 查询逻辑。但是如果记录之一无法持久化, save(Iterable) 会抛出异常并回滚整个事务。有什么办法可以捕获记录错误并继续插入其他记录。

例如:-

原生 Sql 查询

set autocommit=false
delete from EMPLOYEE;
insert into EMPLOYEE(id, name, sal) values(2, ‘Roy’, ‘rt’); —-stmt1
insert into EMPLOYEE(id, name, sal) values(2, ‘Joe’, 3000);
commit;

注意:EMPLOYEE 表中的sal 列是数字。即使 stmt1 失败,执行仍在继续。

hibernate (CrudRepository)
@Autowired
CrudRepository employeeRepository;

@Transactional
public void saveToDB(List dataList) {
employeeRepository.deleteAll();
employeeRepository.save(dataList);
}

最佳答案

任何其他人都在这个问题上绊倒了。我设法通过在 RepositoryInterface 中编写自己的 deleteAll 方法并设置这样的注释来使其工作:

@Modifying(flushAutomatically = true)
@Query("delete from MyEntity")
void deleteAllCustom()

关于java - Spring 数据 : DeleteAll and Insert in same transaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50370376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com