Skip to content

Commit ef314e1

Browse files
committed
Switch to Query.getSingleResultOrNull().
We now use getSingleResultOrNull() to avoid NoResultException handling. Closes #3701
1 parent a8a9d46 commit ef314e1

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;
@@ -429,12 +428,7 @@ public Page<T> findAll(Pageable pageable) {
429428

430429
@Override
431430
public Optional<T> findOne(Specification<T> spec) {
432-
433-
try {
434-
return Optional.of(getQuery(spec, Sort.unsorted()).setMaxResults(2).getSingleResult());
435-
} catch (NoResultException e) {
436-
return Optional.empty();
437-
}
431+
return Optional.ofNullable(getQuery(spec, Sort.unsorted()).setMaxResults(2).getSingleResultOrNull());
438432
}
439433

440434
@Override
@@ -536,13 +530,10 @@ private <S extends T, R> R doFindBy(Specification<T> spec, Class<T> domainClass,
536530
@Override
537531
public <S extends T> Optional<S> findOne(Example<S> example) {
538532

539-
try {
540-
return Optional
541-
.of(getQuery(new ExampleSpecification<>(example, escapeCharacter), example.getProbeType(), Sort.unsorted())
542-
.setMaxResults(2).getSingleResult());
543-
} catch (NoResultException e) {
544-
return Optional.empty();
545-
}
533+
TypedQuery<S> query = getQuery(new ExampleSpecification<>(example, escapeCharacter), example.getProbeType(),
534+
Sort.unsorted()).setMaxResults(2);
535+
536+
return Optional.ofNullable(query.getSingleResultOrNull());
546537
}
547538

548539
@Override

0 commit comments

Comments
 (0)