Если вы проверите интерфейс JPARepository, вы получите
/**
* Deletes the entity with the given id.
*
* @param id must not be {@literal null}.
* @throws IllegalArgumentException in case the given {@code id} is {@literal null}
*/
void deleteById(ID id);
/**
* Deletes a given entity.
*
* @param entity
* @throws IllegalArgumentException in case the given entity is {@literal null}.
*/
void delete(T entity);
, поэтому, согласно вашему требованию, он не будет выдавать никаких исключений, если данный идентификатор не существует в БД.
для этого вы можете использовать boolean isFound = repository.existsById(recipeId);
, и если isFound
имеет значение true, вы можете удалить его. и если isFound
ложно, вы можете выбросить исключение.
Второй способ - проверить
public class SimpleJpaRepository<T, ID> implements JpaRepository<T, ID>, JpaSpecificationExecutor<T>
этот класс содержит deleteById
метод. и этот метод вызовет исключение, если id
не существует в БД.
/*
* (non-Javadoc)
* @see org.springframework.data.repository.CrudRepository#delete(java.io.Serializable)
*/
@Transactional
public void deleteById(ID id) {
Assert.notNull(id, ID_MUST_NOT_BE_NULL);
delete(findById(id).orElseThrow(() -> new EmptyResultDataAccessException(
String.format("No %s entity with id %s exists!", entityInformation.getJavaType(), id), 1)));
}