From f128375289101e0139c1b5b07803d96a10fb8dfb Mon Sep 17 00:00:00 2001 From: Yanming Zhou Date: Tue, 26 Jul 2022 09:38:12 +0800 Subject: [PATCH] Limit single finders max results to 2 for performance. Closes #2594 Original pull request #2604 --- .../jpa/repository/support/QuerydslJpaPredicateExecutor.java | 2 +- .../data/jpa/repository/support/QuerydslJpaRepository.java | 2 +- .../data/jpa/repository/support/SimpleJpaRepository.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutor.java b/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutor.java index 9deb16ab6..ef6545046 100644 --- a/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutor.java +++ b/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutor.java @@ -95,7 +95,7 @@ public class QuerydslJpaPredicateExecutor implements QuerydslPredicateExecuto Assert.notNull(predicate, "Predicate must not be null!"); try { - return Optional.ofNullable(createQuery(predicate).select(path).fetchOne()); + return Optional.ofNullable(createQuery(predicate).select(path).limit(2).fetchOne()); } catch (NonUniqueResultException ex) { throw new IncorrectResultSizeDataAccessException(ex.getMessage(), 1, ex); } diff --git a/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepository.java b/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepository.java index 946f9ed4b..52283236b 100644 --- a/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepository.java +++ b/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepository.java @@ -105,7 +105,7 @@ public class QuerydslJpaRepository extends SimpleJpa public Optional findOne(Predicate predicate) { try { - return Optional.ofNullable(createQuery(predicate).select(path).fetchOne()); + return Optional.ofNullable(createQuery(predicate).select(path).limit(2).fetchOne()); } catch (NonUniqueResultException ex) { throw new IncorrectResultSizeDataAccessException(ex.getMessage(), 1, ex); } 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 8d804ee69..e8dc6e6e0 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 @@ -490,7 +490,7 @@ public class SimpleJpaRepository implements JpaRepositoryImplementation findOne(@Nullable Specification spec) { try { - return Optional.of(getQuery(spec, Sort.unsorted()).getSingleResult()); + return Optional.of(getQuery(spec, Sort.unsorted()).setMaxResults(2).getSingleResult()); } catch (NoResultException e) { return Optional.empty(); } @@ -536,7 +536,7 @@ public class SimpleJpaRepository implements JpaRepositoryImplementation(example, escapeCharacter), example.getProbeType(), Sort.unsorted()) - .getSingleResult()); + .setMaxResults(2).getSingleResult()); } catch (NoResultException e) { return Optional.empty(); }