我正在使用spring data JPA将数据持久保存到数据库中。 CRUDRepository具有我正在使用的 saveAll(Iterable)方法。
由于我对实体字段具有唯一约束,所以我想知道如果我尝试保存一个包含违反此约束的对象的Interable会发生什么。
答案 0 :(得分:1)
使用标准的saveAll
方法,从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。