From 25ebe74915798bc0c326fdcc0c03711d00fc9bd8 Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Thu, 19 Dec 2019 09:07:51 +0100 Subject: [PATCH] DATAJPA-1647 - Removes broken caching of ParameterBinder. The caching was broken because ParameterMetadata used for the key lacked a proper equals and hashCode implementation. Also it references the EntityManager and itself gets referenced in the ParameterBinder and therefore can't safely be cached. Signed-off-by: Jens Schauder Original pull request: #402. --- .../data/jpa/repository/query/PartTreeJpaQuery.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/query/PartTreeJpaQuery.java b/src/main/java/org/springframework/data/jpa/repository/query/PartTreeJpaQuery.java index a045dcde3..6e7c0c632 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/PartTreeJpaQuery.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/PartTreeJpaQuery.java @@ -16,8 +16,6 @@ package org.springframework.data.jpa.repository.query; import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; import javax.persistence.EntityManager; import javax.persistence.Query; @@ -211,7 +209,6 @@ public class PartTreeJpaQuery extends AbstractJpaQuery { private final @Nullable CriteriaQuery cachedCriteriaQuery; private final @Nullable ParameterBinder cachedParameterBinder; private final PersistenceProvider persistenceProvider; - private final Map>, ParameterBinder> binderCache = new ConcurrentHashMap<>(); private final QueryParameterSetter.QueryMetadataCache metadataCache = new QueryParameterSetter.QueryMetadataCache(); QueryPreparer(PersistenceProvider persistenceProvider, boolean recreateQueries) { @@ -335,8 +332,7 @@ public class PartTreeJpaQuery extends AbstractJpaQuery { } private ParameterBinder getBinder(List> expressions) { - return this.binderCache.computeIfAbsent(expressions, - key -> ParameterBinderFactory.createCriteriaBinder(parameters, key)); + return ParameterBinderFactory.createCriteriaBinder(parameters, expressions); } private Sort getDynamicSort(JpaParametersParameterAccessor accessor) {