From 46aa72c873ea25b77c5193a694ebb71d46d17f8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20Westk=C3=A4mper?= Date: Tue, 26 Apr 2011 15:10:42 +0000 Subject: [PATCH] #771285 : fixed distinct serialization --- .../java/com/mysema/query/jdo/JDOQLSerializer.java | 9 +++++---- .../src/test/java/com/mysema/query/jdo/BasicsTest.java | 10 ++++++++++ 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/querydsl-jdo/src/main/java/com/mysema/query/jdo/JDOQLSerializer.java b/querydsl-jdo/src/main/java/com/mysema/query/jdo/JDOQLSerializer.java index 504f50893..70393f14a 100644 --- a/querydsl-jdo/src/main/java/com/mysema/query/jdo/JDOQLSerializer.java +++ b/querydsl-jdo/src/main/java/com/mysema/query/jdo/JDOQLSerializer.java @@ -71,11 +71,11 @@ public final class JDOQLSerializer extends SerializerBase { } }; - private Expression candidatePath; + private final Expression candidatePath; - private List constants = new ArrayList(); + private final List constants = new ArrayList(); - private Stack> constantToLabel = new Stack>(); + private final Stack> constantToLabel = new Stack>(); public JDOQLSerializer(JDOQLTemplates templates, Expression candidate) { super(templates); @@ -91,6 +91,7 @@ public final class JDOQLSerializer extends SerializerBase { return constants; } + @Override public Map getConstantToLabel() { return constantToLabel.peek(); } @@ -157,7 +158,7 @@ public final class JDOQLSerializer extends SerializerBase { }else{ append(SELECT); } - if (select.size() >1 || !select.get(0).equals(source)){ + if (select.size() >1 || !select.get(0).equals(source) || metadata.isDistinct()){ handle(COMMA, select); }else{ skippedSelect = true; diff --git a/querydsl-jdo/src/test/java/com/mysema/query/jdo/BasicsTest.java b/querydsl-jdo/src/test/java/com/mysema/query/jdo/BasicsTest.java index 5a39aed37..ea7e583fa 100644 --- a/querydsl-jdo/src/test/java/com/mysema/query/jdo/BasicsTest.java +++ b/querydsl-jdo/src/test/java/com/mysema/query/jdo/BasicsTest.java @@ -70,6 +70,16 @@ public class BasicsTest extends AbstractJDOTest { assertEquals("count", 2, query().from(product).count()); } + @Test + public void List_Distinct(){ + query().from(product).listDistinct(product); + } + + @Test + public void List_Distinct_Two_Sources(){ + query().from(product, product2).listDistinct(product, product2); + } + @Test public void Single_Result(){ query().from(product).singleResult(product);