diff --git a/src/main/java/org/springframework/data/jpa/repository/query/CriteriaQueryParameterBinder.java b/src/main/java/org/springframework/data/jpa/repository/query/CriteriaQueryParameterBinder.java index 249c7fc62..3955ab605 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/CriteriaQueryParameterBinder.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/CriteriaQueryParameterBinder.java @@ -20,21 +20,20 @@ import java.util.Iterator; import javax.persistence.Parameter; import javax.persistence.Query; +import javax.persistence.criteria.CriteriaQuery; import org.springframework.data.jpa.repository.query.JpaParameters.JpaParameter; import org.springframework.data.jpa.repository.query.ParameterMetadataProvider.ParameterMetadata; -import org.springframework.data.jpa.repository.support.ExpressionEvaluationContextProvider; import org.springframework.data.repository.query.Parameters; import org.springframework.util.Assert; /** - * Special {@link ParameterBinder} that uses {@link javax.persistence.criteria.ParameterExpression}s to bind query - * parameters. + * Special {@link ParameterBinder} to bind {@link CriteriaQuery} parameters. parameters. * * @author Oliver Gierke * @author Thomas Darimont */ -class CriteriaQueryParameterBinder extends ExpressionAwareParameterBinder { +class CriteriaQueryParameterBinder extends ParameterBinder { private final Iterator> expressions; @@ -45,12 +44,10 @@ class CriteriaQueryParameterBinder extends ExpressionAwareParameterBinder { * @param parameters * @param values * @param expressions - * @param evaluationContextProvider */ - CriteriaQueryParameterBinder(JpaParameters parameters, Object[] values, Iterable> expressions, - ExpressionEvaluationContextProvider evaluationContextProvider) { + CriteriaQueryParameterBinder(JpaParameters parameters, Object[] values, Iterable> expressions) { - super(parameters, values, evaluationContextProvider); + super(parameters, values); Assert.notNull(expressions); this.expressions = expressions.iterator(); } diff --git a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryLookupStrategy.java b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryLookupStrategy.java index 8ea71d398..fc682afff 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryLookupStrategy.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryLookupStrategy.java @@ -93,7 +93,7 @@ public final class JpaQueryLookupStrategy { protected RepositoryQuery resolveQuery(JpaQueryMethod method, EntityManager em, NamedQueries namedQueries) { try { - return new PartTreeJpaQuery(method, em, this.evaluationContextProvider); + return new PartTreeJpaQuery(method, em); } catch (IllegalArgumentException e) { throw new IllegalArgumentException(String.format("Could not create query metamodel for method %s!", method.toString()), e); 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 2236c79d4..32546aeed 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 @@ -26,8 +26,6 @@ import javax.persistence.criteria.CriteriaQuery; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.repository.query.JpaQueryExecution.DeleteExecution; import org.springframework.data.jpa.repository.query.ParameterMetadataProvider.ParameterMetadata; -import org.springframework.data.jpa.repository.support.ExpressionEvaluationContextProvider; -import org.springframework.data.jpa.repository.support.StandardExpressionEvaluationContextProvider; import org.springframework.data.repository.query.ParametersParameterAccessor; import org.springframework.data.repository.query.parser.PartTree; @@ -46,7 +44,6 @@ public class PartTreeJpaQuery extends AbstractJpaQuery { private final QueryPreparer query; private final QueryPreparer countQuery; private final EntityManager em; - private final ExpressionEvaluationContextProvider evaluationContextProvider; /** * Creates a new {@link PartTreeJpaQuery}. @@ -56,22 +53,8 @@ public class PartTreeJpaQuery extends AbstractJpaQuery { */ public PartTreeJpaQuery(JpaQueryMethod method, EntityManager em) { - this(method, em, StandardExpressionEvaluationContextProvider.INSTANCE); - } - - /** - * Creates a new {@link PartTreeJpaQuery}. - * - * @param method must not be {@literal null}. - * @param em must not be {@literal null}. - * @param evaluationContextProvider - */ - public PartTreeJpaQuery(JpaQueryMethod method, EntityManager em, - ExpressionEvaluationContextProvider evaluationContextProvider) { - super(method, em); this.em = em; - this.evaluationContextProvider = evaluationContextProvider; this.domainClass = method.getEntityInformation().getJavaType(); this.tree = new PartTree(method.getName(), domainClass); @@ -222,7 +205,7 @@ public class PartTreeJpaQuery extends AbstractJpaQuery { } private ParameterBinder getBinder(Object[] values, List> expressions) { - return new CriteriaQueryParameterBinder(parameters, values, expressions, evaluationContextProvider); + return new CriteriaQueryParameterBinder(parameters, values, expressions); } private Sort getDynamicSort(Object[] values) { diff --git a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java index 5c8656ad8..fd01dd568 100644 --- a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java @@ -60,8 +60,6 @@ import org.springframework.data.jpa.domain.sample.SpecialUser; import org.springframework.data.jpa.domain.sample.User; import org.springframework.data.jpa.repository.SampleSecurity.SampleSecurityContextHolder; import org.springframework.data.jpa.repository.sample.UserRepository; -import org.springframework.expression.Expression; -import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; @@ -1672,21 +1670,6 @@ public class UserRepositoryTests { assertThat(users.get(0), is(secondUser)); } - /** - * @see DATAJPA-564 - */ - @Test - public void shouldFindUserByLastnameWithSpelExpressionInDerivedQuery() { - - flushTestUsers(); - - Expression expr = new SpelExpressionParser().parseExpression("'Gier' + 'ke'"); - List users = repository.queryByLastname(expr); - - assertThat(users, hasSize(1)); - assertThat(users.get(0), is(firstUser)); - } - /** * @see DATAJPA-564 */ diff --git a/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java b/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java index 8b4b80bf0..b1b2295c5 100644 --- a/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java +++ b/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java @@ -37,7 +37,6 @@ import org.springframework.data.jpa.repository.QueryHints; import org.springframework.data.jpa.repository.query.Procedure; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; -import org.springframework.expression.Expression; import org.springframework.transaction.annotation.Transactional; import com.google.common.base.Optional; @@ -473,11 +472,6 @@ public interface UserRepository extends JpaRepository, JpaSpecifi @Query("select u from User u where u.lastname like %:#{[0]}% and u.lastname like %:lastname%") List findByLastnameWithSpelExpression(@Param("lastname") String lastname); - /** - * @see DATAJPA-564 - */ - List queryByLastname(Expression lastname); - /** * @see DATAJPA-564 */