diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java index 746703220f..3f53ba8bc3 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java @@ -93,6 +93,7 @@ * @author Yanming Zhou * @author Ernst-Jan van der Laan * @author Diego Krupitza + * @author Seol-JY */ @Repository @Transactional(readOnly = true) @@ -196,14 +197,16 @@ public void delete(T entity) { Class type = ProxyUtils.getUserClass(entity); - T existing = (T) entityManager.find(type, entityInformation.getId(entity)); - - // if the entity to be deleted doesn't exist, delete is a NOOP - if (existing == null) { + if (entityManager.contains(entity)) { + entityManager.remove(entity); return; } - entityManager.remove(entityManager.contains(entity) ? entity : entityManager.merge(entity)); + // if the entity to be deleted doesn't exist, delete is a NOOP + T existing = (T) entityManager.find(type, entityInformation.getId(entity)); + if (existing != null) { + entityManager.remove(entityManager.merge(entity)); + } } @Override