Do not throw an exception for deleteById when no rows are found.
Comply with Spring Data Commons' new policy of not throwing an EmptyResultDataAccessException during deleteById. Resolves: #2719. Related: https://github.com/spring-projects/spring-data-commons/issues/2651
This commit is contained in:
@@ -15,7 +15,12 @@
|
||||
*/
|
||||
package org.springframework.data.jpa.repository.support;
|
||||
|
||||
import static org.springframework.data.jpa.repository.query.QueryUtils.*;
|
||||
import static org.springframework.data.jpa.repository.query.QueryUtils.COUNT_QUERY_STRING;
|
||||
import static org.springframework.data.jpa.repository.query.QueryUtils.DELETE_ALL_QUERY_BY_ID_STRING;
|
||||
import static org.springframework.data.jpa.repository.query.QueryUtils.DELETE_ALL_QUERY_STRING;
|
||||
import static org.springframework.data.jpa.repository.query.QueryUtils.applyAndBind;
|
||||
import static org.springframework.data.jpa.repository.query.QueryUtils.getQueryString;
|
||||
import static org.springframework.data.jpa.repository.query.QueryUtils.toOrders;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.LockModeType;
|
||||
@@ -42,7 +47,6 @@ import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
import org.springframework.dao.EmptyResultDataAccessException;
|
||||
import org.springframework.data.domain.Example;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
@@ -167,8 +171,7 @@ public class SimpleJpaRepository<T, ID> implements JpaRepositoryImplementation<T
|
||||
|
||||
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)));
|
||||
findById(id).ifPresent(this::delete);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -15,10 +15,13 @@
|
||||
*/
|
||||
package org.springframework.data.jpa.repository.support;
|
||||
|
||||
import static java.util.Collections.*;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.springframework.data.jpa.domain.Specification.*;
|
||||
import static java.util.Collections.singletonMap;
|
||||
import static org.assertj.core.api.Assertions.assertThatNoException;
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.springframework.data.jpa.domain.Specification.where;
|
||||
|
||||
import jakarta.persistence.EntityGraph;
|
||||
import jakarta.persistence.EntityManager;
|
||||
@@ -38,7 +41,6 @@ import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
import org.mockito.junit.jupiter.MockitoSettings;
|
||||
import org.mockito.quality.Strictness;
|
||||
import org.springframework.dao.EmptyResultDataAccessException;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.jpa.domain.sample.User;
|
||||
import org.springframework.data.jpa.repository.EntityGraph.EntityGraphType;
|
||||
@@ -51,6 +53,7 @@ import org.springframework.data.repository.CrudRepository;
|
||||
* @author Thomas Darimont
|
||||
* @author Mark Paluch
|
||||
* @author Jens Schauder
|
||||
* @author Greg Turnquist
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
@MockitoSettings(strictness = Strictness.LENIENT)
|
||||
@@ -122,10 +125,10 @@ class SimpleJpaRepositoryUnitTests {
|
||||
verify(countQuery, never()).getSingleResult();
|
||||
}
|
||||
|
||||
@Test // DATAJPA-177
|
||||
void throwsExceptionIfEntityToDeleteDoesNotExist() {
|
||||
@Test // DATAJPA-177, gh-2719
|
||||
void doesNotThrowExceptionIfEntityToDeleteDoesNotExist() {
|
||||
|
||||
assertThatExceptionOfType(EmptyResultDataAccessException.class).isThrownBy(() -> repo.deleteById(4711));
|
||||
assertThatNoException().isThrownBy(() -> repo.deleteById(4711));
|
||||
}
|
||||
|
||||
@Test // DATAJPA-689, DATAJPA-696
|
||||
|
||||
Reference in New Issue
Block a user