diff --git a/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java b/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java index 708773fa7..e330f037c 100644 --- a/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java +++ b/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java @@ -168,6 +168,19 @@ public class SimpleJpaRepository implements JpaRepositoryImplementation repository.save(new User())).isInstanceOf(DataIntegrityViolationException.class); + } + + @Test // DATAJPA-1535 + public void deleteNewInstanceSucceedsByDoingNothing() { + repository.delete(new User()); + } + private Page executeSpecWithSort(Sort sort) { flushTestUsers(); diff --git a/src/test/java/org/springframework/data/jpa/repository/support/SimpleJpaRepositoryUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/support/SimpleJpaRepositoryUnitTests.java index a300bd62d..32167b669 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/SimpleJpaRepositoryUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/SimpleJpaRepositoryUnitTests.java @@ -156,4 +156,33 @@ public class SimpleJpaRepositoryUnitTests { verify(em).merge(attachedUser); } + + @Test // DATAJPA-1535 + public void doNothingWhenNewInstanceGetsDeleted() { + + User newUser = new User(); + newUser.setId(null); + + repo.delete(newUser); + + verify(em, never()).find(any(Class.class), any(Object.class)); + verify(em, never()).remove(newUser); + verify(em, never()).merge(newUser); + } + + @Test // DATAJPA-1535 + public void doNothingWhenNonExistantInstanceGetsDeleted() { + + User newUser = new User(); + newUser.setId(23); + + when(information.isNew(newUser)).thenReturn(false); + when(em.find(User.class,23)).thenReturn(null); + + repo.delete(newUser); + + verify(em, never()).remove(newUser); + verify(em, never()).merge(newUser); + } + }