DATAJPA-736 - Added support for non-ASCII characters in entity names.

We now use an improved regular expression to detect identifier clauses in JPQL queries to be able to derive count queries for queries that use non-ASCII characters in entity names.
This commit is contained in:
Oliver Gierke
2015-06-14 11:55:52 +02:00
parent 42e00d1edf
commit 94cd342038
2 changed files with 9 additions and 1 deletions

View File

@@ -80,7 +80,7 @@ public abstract class QueryUtils {
private static final Pattern ALIAS_MATCH;
private static final Pattern COUNT_MATCH;
private static final String IDENTIFIER = "[\\p{Alnum}._$]+";
private static final String IDENTIFIER = "[\\p{Lu}\\P{InBASIC_LATIN}\\p{Alnum}._$]+";
private static final String IDENTIFIER_GROUP = String.format("(%s)", IDENTIFIER);
private static final String JOIN = "join " + IDENTIFIER + " (as )?" + IDENTIFIER_GROUP;

View File

@@ -295,6 +295,14 @@ public class QueryUtilsUnitTests {
assertThat(applySorting(query, sort, "c"), endsWith("order by p.lineItems asc"));
}
/**
* @see DATAJPA-736
*/
@Test
public void supportsNonAsciiCharactersInEntityNames() {
assertThat(createCountQueryFor("select u from Usèr u"), is("select count(u) from Usèr u"));
}
private void assertCountQuery(String originalQuery, String countQuery) {
assertThat(createCountQueryFor(originalQuery), is(countQuery));
}