我正在尝试使用 hibernate (Spring JPA) 实现以下本机查询逻辑。但是,如果其中一条记录无法持久保存,则 save(Iterable) 会引发异常并回滚整个事务。有什么方法可以捕获记录错误并继续插入其他记录。
eg:-
原生 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;
注意:Sal 列在 EMPLOYEE 表中是数字。即使 stmt1 失败,执行仍会继续。
Hibernate(CrudRepository)
@Autowired
CrudRepository employeeRepository;
@Transactional
public void saveToDB(List dataList) {
employeeRepository.deleteAll();
employeeRepository.save(dataList);
}
其他人偶然发现这个问题。我设法通过在存储库接口中编写自己的deleteAll方法并设置注释来使其工作,如下所示:
@Modifying(flushAutomatically = true)
@Query("delete from MyEntity")
void deleteAllCustom()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)