hibernate - 如何在 Spring Hibernate 中批量删除?
问题描述
使用 Spring Boot + Hibernate,我正在尝试使用 nameQuery 或 nativeQuery 批量删除数据。一些元素违反了约束,Spring/Hibernate 会生成一个完整的回滚。
是否可以避免回滚?即100条记录要删除,3条有约束,所以Hibernate生成100条回滚,但我只需要回滚3条,仍然想删除97个元素。现在我创建了一个糟糕的解决方案,我使用了一个 for 循环并执行了 100 个 sql 查询。
在服务层:
@Transactional(noRollbackFor = {
SQLIntegrityConstraintViolationException.class,
PersistenceException.class,
ConstraintViolationException.class,
DataIntegrityViolationException.class })
public int deleteAll(String ids[]) {
call.dao.delete(ids)
}
在休眠层上:
delete(String ids[]) {
sql = "DELETE from mae1000 as x WHERE x.idccty in (:ids)";
int r = getCurrentSession().createNativeQuery(sql).setParameter("ids", Arrays.asList(ids)).executeUpdate();
}
解决方案
推荐阅读
- html - 防止绝对定位的 div 增加其父级的大小
- r - 使用多个变量时更改图例标签
- wordpress - 仅当启用延期交货的产品缺货时,才在产品页面上显示自定义文本块
- windows - Git 挂起在 Windows 10 上运行任何命令
- docker - 我想部署一个镜像 Docker(也许是 tomcat ?或其他)
- r - 如何将多个线性回归方程添加到 ggplot 的底部?
- django - 在 django 上重定向到带有 pk 的页面
- javascript - 更改所选选项的值
- arrays - 从(非)正态分布的数字数组中删除不相关的值(尾端)
- javascript - 如何使用表中的 ID 并将其发送到 php 文件进行查询