From fa41595818eeb0d1da7f271a7f0554eb544fc6e3 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/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutor.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutor.java index c4f4b07b9..1de39e2c5 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutor.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutor.java @@ -91,7 +91,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/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepository.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepository.java index 3ef8c5db4..d082e65a6 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepository.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepository.java @@ -101,7 +101,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/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 0b0125bc5..0927afc23 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 @@ -452,7 +452,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(); } @@ -482,7 +482,7 @@ public class SimpleJpaRepository implements JpaRepositoryImplementation(example, escapeCharacter), example.getProbeType(), Sort.unsorted()) - .getSingleResult()); + .setMaxResults(2).getSingleResult()); } catch (NoResultException e) { return Optional.empty(); }