Skip to content

Commit 68fd4de

Browse files
committed
Switch to Query.getSingleResultOrNull().
We now use getSingleResultOrNull() to avoid NoResultException handling. Closes: #3701 Original Pull Request: #3695
1 parent b2e0d4c commit 68fd4de

File tree

2 files changed

+7
-23
lines changed

2 files changed

+7
-23
lines changed

spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryExecution.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package org.springframework.data.jpa.repository.query;
1717

1818
import jakarta.persistence.EntityManager;
19-
import jakarta.persistence.NoResultException;
2019
import jakarta.persistence.Query;
2120
import jakarta.persistence.StoredProcedureQuery;
2221

@@ -87,13 +86,7 @@ public Object execute(AbstractJpaQuery query, JpaParametersParameterAccessor acc
8786
Assert.notNull(query, "AbstractJpaQuery must not be null");
8887
Assert.notNull(accessor, "JpaParametersParameterAccessor must not be null");
8988

90-
Object result;
91-
92-
try {
93-
result = doExecute(query, accessor);
94-
} catch (NoResultException e) {
95-
return null;
96-
}
89+
Object result = doExecute(query, accessor);
9790

9891
if (result == null) {
9992
return null;
@@ -221,7 +214,7 @@ static class SingleEntityExecution extends JpaQueryExecution {
221214
@Override
222215
protected Object doExecute(AbstractJpaQuery query, JpaParametersParameterAccessor accessor) {
223216

224-
return query.createQuery(accessor).getSingleResult();
217+
return query.createQuery(accessor).getSingleResultOrNull();
225218
}
226219
}
227220

spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/SimpleJpaRepository.java

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919

2020
import jakarta.persistence.EntityManager;
2121
import jakarta.persistence.LockModeType;
22-
import jakarta.persistence.NoResultException;
2322
import jakarta.persistence.Parameter;
2423
import jakarta.persistence.Query;
2524
import jakarta.persistence.TypedQuery;
@@ -440,12 +439,7 @@ public Page<T> findAll(Pageable pageable) {
440439

441440
@Override
442441
public Optional<T> findOne(Specification<T> spec) {
443-
444-
try {
445-
return Optional.of(getQuery(spec, Sort.unsorted()).setMaxResults(2).getSingleResult());
446-
} catch (NoResultException e) {
447-
return Optional.empty();
448-
}
442+
return Optional.ofNullable(getQuery(spec, Sort.unsorted()).setMaxResults(2).getSingleResultOrNull());
449443
}
450444

451445
@Override
@@ -548,13 +542,10 @@ private <S extends T, R> R doFindBy(Specification<T> spec, Class<T> domainClass,
548542
@Override
549543
public <S extends T> Optional<S> findOne(Example<S> example) {
550544

551-
try {
552-
return Optional
553-
.of(getQuery(new ExampleSpecification<>(example, escapeCharacter), example.getProbeType(), Sort.unsorted())
554-
.setMaxResults(2).getSingleResult());
555-
} catch (NoResultException e) {
556-
return Optional.empty();
557-
}
545+
TypedQuery<S> query = getQuery(new ExampleSpecification<>(example, escapeCharacter), example.getProbeType(),
546+
Sort.unsorted()).setMaxResults(2);
547+
548+
return Optional.ofNullable(query.getSingleResultOrNull());
558549
}
559550

560551
@Override

0 commit comments

Comments
 (0)