From c8ff52c6629776a1ff9b83f8be4972b7fa29cd33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcus=20Vin=C3=ADcius=20Neves=20Voltolim=20Satelis?= Date: Sat, 19 Sep 2020 23:57:46 -0300 Subject: [PATCH 1/3] DATAJPA-1198 Add condition to add lower in order by only String type --- .../springframework/data/jpa/repository/support/Querydsl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java b/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java index 5003501027..c59dd80c31 100644 --- a/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java +++ b/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java @@ -235,7 +235,7 @@ private Expression buildOrderPropertyPathFrom(Order order) { while (path != null) { - sortPropertyExpression = !path.hasNext() && order.isIgnoreCase() // + sortPropertyExpression = !path.hasNext() && order.isIgnoreCase() && String.class == path.getType() // ? Expressions.stringPath((Path) sortPropertyExpression, path.getSegment()).lower() // : Expressions.path(path.getType(), (Path) sortPropertyExpression, path.getSegment()); From 3344006ecee3d7988c85f3f0156b9f126b6e9dcd Mon Sep 17 00:00:00 2001 From: Marcus Neves Satelis Date: Sun, 20 Sep 2020 00:45:26 -0300 Subject: [PATCH 2/3] Implements JUnit test --- .../support/QuerydslIntegrationTests.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/springframework/data/jpa/repository/support/QuerydslIntegrationTests.java b/src/test/java/org/springframework/data/jpa/repository/support/QuerydslIntegrationTests.java index 17bb9dafd0..0282a15dfe 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/QuerydslIntegrationTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/QuerydslIntegrationTests.java @@ -32,11 +32,14 @@ import com.querydsl.core.types.dsl.PathBuilder; import com.querydsl.jpa.JPQLQuery; +import java.util.stream.Stream; + /** * Integration tests for {@link Querydsl}. * * @author Thomas Darimont * @author Jens Schauder + * @author Marcus Voltolim */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration({ "classpath:infrastructure.xml" }) @@ -52,7 +55,7 @@ public class QuerydslIntegrationTests { @Before public void setup() { - userPath = new PathBuilder(User.class, "user"); + userPath = new PathBuilder<>(User.class, "user"); querydsl = new Querydsl(em, userPath); userQuery = querydsl.createQuery().select(userPath); } @@ -67,4 +70,17 @@ public void defaultOrderingShouldNotGenerateAnNullOrderingHint() { .doesNotContain("nulls first") // .doesNotContain("nulls last"); } + + @Test // DATAJPA-1198; DATAJPA-1779 + public void orderWithIgnoreCaseAddLowerOnlyStringType() { + // firstname (String); id (Integer); dateOfBirth (Date) + Sort.Order[] orders = Stream.of("firstname", "id", "dateOfBirth").map(name -> Sort.Order.asc(name).ignoreCase()).toArray(Sort.Order[]::new); + JPQLQuery result = querydsl.applySorting(Sort.by(orders), userQuery); + + assertThat(result).isNotNull(); + assertThat(result.toString()) // + .startsWith("select user") // + .endsWith("order by lower(user.firstname) asc, user.id asc, user.dateOfBirth asc"); + } + } From f10e635269997c89318e9c60532f4359cc4118f8 Mon Sep 17 00:00:00 2001 From: Marcus Neves Satelis Date: Sun, 20 Sep 2020 00:47:10 -0300 Subject: [PATCH 3/3] add tag @author --- .../springframework/data/jpa/repository/support/Querydsl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java b/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java index c59dd80c31..0b2c160d48 100644 --- a/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java +++ b/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java @@ -47,6 +47,7 @@ * @author Thomas Darimont * @author Mark Paluch * @author Christoph Strobl + * @author Marcus Voltolim */ public class Querydsl {