java - 如果违反约束,则 CrudRepository saveAll 方法抛出异常
问题描述
我正在使用 spring data JPA 将我的数据保存到数据库中。CRUDRepository 具有我正在使用的saveAll(Iterable)方法。
由于我对实体字段有一个唯一约束,我想知道如果我尝试保存一个包含违反此约束的 Object 的 Interable 会发生什么。
解决方案
使用标准saveAll
方法 from SimpleJpaRepository
,您基本上是多次调用该save
方法,每个实例一次
@Transactional
public <S extends T> List<S> saveAll(Iterable<S> entities) {
// ... Omitted
for (S entity : entities) {
result.add(save(entity));
}
return result;
}
@Transactional
public <S extends T> S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
您可以看到一个EntityManager
实例被使用、调用persist
或merge
.
这意味着它的规则适用,您将收到ConstraintViolationException。
推荐阅读
- jquery - 如何从 createNativeQuery 获取 Doctrine ArrayCollection
- azure - 选择性区域中的多个 Azure VM 部署
- r - 如何创建从较大数据集过滤而不制作特定容器的数据框列表
- powershell - 如何将所有 IIS 站点和应用程序池详细信息导出到 Excel 工作表
- scala - 在 Spark Join [Scala] 中包含空值
- angular - 我可以在延迟加载的模块中从 Valor Software 的 ngx-bootstrap 降级 ModalService 吗?
- ios - 无法将文件添加到 Xcode
- c++ - 为什么在 C 和 C++ 中动态分配的对象是未命名的?
- git - 修复来自 Git Rebase 的重复提交
- git - github PR 显示每个过去的提交