From 60241e77572210248fe9e31e26dceb63015ddd5b Mon Sep 17 00:00:00 2001 From: reta Date: Sat, 28 Dec 2019 16:48:06 -0500 Subject: [PATCH] DATAJPA-1652 - Support for operators to directly follow named parameters. Since `\P{P}` doesn't include things like `<`, `>`, or `|` those where considered part of the parameter name when they weren't separated from it by whitespace. This is now fixed. Original pull request: #405. --- .../data/jpa/repository/query/QueryUtils.java | 5 ++-- .../query/StringQueryUnitTests.java | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java index 00a3fece5..f5b655967 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java @@ -79,6 +79,7 @@ import org.springframework.util.StringUtils; * @author Florian Lüdiger * @author Grégoire Druant * @author Mohammad Hewedy + * @author Andriy Redko */ public abstract class QueryUtils { @@ -89,8 +90,8 @@ public abstract class QueryUtils { // Z Separator // Cc Control // Cf Format - // P Punctuation - private static final String IDENTIFIER = "[._[\\P{Z}&&\\P{Cc}&&\\P{Cf}&&\\P{P}]]+"; + // Punct Punctuation + private static final String IDENTIFIER = "[._$[\\P{Z}&&\\P{Cc}&&\\P{Cf}&&\\P{Punct}]]+"; static final String COLON_NO_DOUBLE_COLON = "(?u.age"; + StringQuery query = new StringQuery(queryString); + + softly.assertThat(query.getQueryString()).isEqualTo(queryString); + softly.assertThat(query.hasParameterBindings()).isTrue(); + softly.assertThat(query.getParameterBindings()).hasSize(1); + softly.assertThat(query.getParameterBindings().get(0).getName()).isEqualTo("age"); + + softly.assertAll(); + } + public void checkNumberOfNamedParameters(String query, int expectedSize, String label) { DeclaredQuery declaredQuery = DeclaredQuery.of(query);