From 168d7d56d3a8b04be52369dbb8b4af3728bc60d0 Mon Sep 17 00:00:00 2001 From: Yanming Zhou Date: Fri, 2 Jun 2023 16:08:43 +0800 Subject: [PATCH] Add missing null check for metadata. 1. null check on variable `metadata` is missing in method `existsById` 2. `CrudMethodMetadata::getComment` should be `@Nullable` Closes #2991 Original pull request: #2995 --- .../data/jpa/repository/support/CrudMethodMetadata.java | 2 ++ .../support/CrudMethodMetadataPostProcessor.java | 3 ++- .../data/jpa/repository/support/SimpleJpaRepository.java | 9 +-------- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/CrudMethodMetadata.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/CrudMethodMetadata.java index 359df17cb..0cf59bca7 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/CrudMethodMetadata.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/CrudMethodMetadata.java @@ -33,6 +33,7 @@ import org.springframework.lang.Nullable; * @author Mark Paluch * @author Jens Schauder * @author Greg Turnquist + * @author Yanming Zhou */ public interface CrudMethodMetadata { @@ -66,6 +67,7 @@ public interface CrudMethodMetadata { * @return * @since 3.0 */ + @Nullable String getComment(); /** diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/CrudMethodMetadataPostProcessor.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/CrudMethodMetadataPostProcessor.java index 3128fed67..4932f7f1f 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/CrudMethodMetadataPostProcessor.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/CrudMethodMetadataPostProcessor.java @@ -56,6 +56,7 @@ import org.springframework.util.ReflectionUtils; * @author Christoph Strobl * @author Mark Paluch * @author Jens Schauder + * @author Yanming Zhou */ class CrudMethodMetadataPostProcessor implements RepositoryProxyPostProcessor, BeanClassLoaderAware { @@ -181,7 +182,7 @@ class CrudMethodMetadataPostProcessor implements RepositoryProxyPostProcessor, B private final @Nullable LockModeType lockModeType; private final org.springframework.data.jpa.repository.support.QueryHints queryHints; private final org.springframework.data.jpa.repository.support.QueryHints queryHintsForCount; - private final String comment; + private final @Nullable String comment; private final Optional entityGraph; private final Method method; 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 e537c9537..f48d9c3bc 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 @@ -370,14 +370,7 @@ public class SimpleJpaRepository implements JpaRepositoryImplementation query = em.createQuery(existsQuery, Long.class); - Map hints = new HashMap<>(); - getQueryHints().withFetchGraphs(em).forEach(hints::put); - - if (metadata.getComment() != null && provider.getCommentHintKey() != null) { - hints.put(provider.getCommentHintKey(), provider.getCommentHintValue(metadata.getComment())); - } - - hints.forEach(query::setHint); + applyQueryHints(query); if (!entityInformation.hasCompositeId()) { query.setParameter(idAttributeNames.iterator().next(), id);