From 499b8d7761417fa35afd2f3bfbe7f889eac5dd5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Tue, 12 Mar 2013 11:24:59 +0200 Subject: [PATCH] #174 Add nullsFirst and nullsLast serialization to JPA --- .../java/com/mysema/query/jpa/JPQLSerializer.java | 8 +++++++- .../com/mysema/query/AbstractStandardTest.java | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/querydsl-jpa/src/main/java/com/mysema/query/jpa/JPQLSerializer.java b/querydsl-jpa/src/main/java/com/mysema/query/jpa/JPQLSerializer.java index ed9912567..5ce37343a 100644 --- a/querydsl-jpa/src/main/java/com/mysema/query/jpa/JPQLSerializer.java +++ b/querydsl-jpa/src/main/java/com/mysema/query/jpa/JPQLSerializer.java @@ -48,6 +48,7 @@ import com.mysema.query.types.FactoryExpression; import com.mysema.query.types.Operation; import com.mysema.query.types.Operator; import com.mysema.query.types.Ops; +import com.mysema.query.types.Order; import com.mysema.query.types.OrderSpecifier; import com.mysema.query.types.ParamExpression; import com.mysema.query.types.Path; @@ -226,7 +227,12 @@ public class JPQLSerializer extends SerializerBase { append(COMMA); } handle(os.getTarget()); - append(" " + os.getOrder().toString().toLowerCase(Locale.ENGLISH)); + append(os.getOrder() == Order.ASC ? " asc" : " desc"); + if (os.getNullHandling() == OrderSpecifier.NullHandling.NullsFirst) { + append(" nulls first"); + } else if (os.getNullHandling() == OrderSpecifier.NullHandling.NullsLast) { + append(" nulls last"); + } first = false; } } diff --git a/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java b/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java index 9889ce74c..e06228d58 100644 --- a/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java +++ b/querydsl-jpa/src/test/java/com/mysema/query/AbstractStandardTest.java @@ -749,6 +749,20 @@ public abstract class AbstractStandardTest { NumberPath weight = new NumberPath(Double.class, "weight"); query().from(cat).orderBy(weight.asc()).list(cat.bodyWeight.as(weight)); } + + @Test + public void Order_NullsFirst() { + query().from(cat) + .orderBy(cat.name.asc().nullsFirst()) + .list(cat); + } + + @Test + public void Order_NullsLast() { + query().from(cat) + .orderBy(cat.name.asc().nullsLast()) + .list(cat); + } @Test @NoOpenJPA // FIXME