Позади видно, что происходит в случае SimpleJpaRepository
метода сохранения с Iterable
@Transactional
public <S extends T> List<S> More save(Iterable<S> entities) {
List<S> result = new ArrayList<S>();
if (entities == null) {
return result;
}
for (S entity : entities) {
result.add(save(entity));
}
return result;
}
Стоит отметить, что сохранение с Iterable
было изменено на saveAll
в последних версиях
Подробнее см.
Что произойдет, если я сохраню 10 сущностей, а для 6-й не получится?
По умолчанию CrudRespository
будет иметь @Transactional
, поэтому в случае исключения ничего не сохраняется.
В случае обработки вручную это будет работать
Если вы делаете что-то подобное, это будет откатом.
@Transactional(rollbackFor=RuntimeException.class)
public List<Car> saveAllOrNone(List<Car> cars) {
for(Car car: cars) {
repo.save(car);
}
}