Skip to content

Commit e442ed8

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

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

+2-9
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

+5-14
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;
@@ -442,12 +441,7 @@ public Page<T> findAll(Pageable pageable) {
442441

443442
@Override
444443
public Optional<T> findOne(Specification<T> spec) {
445-
446-
try {
447-
return Optional.of(getQuery(spec, Sort.unsorted()).setMaxResults(2).getSingleResult());
448-
} catch (NoResultException e) {
449-
return Optional.empty();
450-
}
444+
return Optional.ofNullable(getQuery(spec, Sort.unsorted()).setMaxResults(2).getSingleResultOrNull());
451445
}
452446

453447
@Override
@@ -564,13 +558,10 @@ private <S extends T, R> R doFindBy(Specification<T> spec, Class<T> domainClass,
564558
@Override
565559
public <S extends T> Optional<S> findOne(Example<S> example) {
566560

567-
try {
568-
return Optional
569-
.of(getQuery(new ExampleSpecification<>(example, escapeCharacter), example.getProbeType(), Sort.unsorted())
570-
.setMaxResults(2).getSingleResult());
571-
} catch (NoResultException e) {
572-
return Optional.empty();
573-
}
561+
TypedQuery<S> query = getQuery(new ExampleSpecification<>(example, escapeCharacter), example.getProbeType(),
562+
Sort.unsorted()).setMaxResults(2);
563+
564+
return Optional.ofNullable(query.getSingleResultOrNull());
574565
}
575566

576567
@Override

0 commit comments

Comments
 (0)