#771285 : fixed distinct serialization

This commit is contained in:
Timo Westkämper 2011-04-26 15:10:42 +00:00
parent db76950bec
commit 46aa72c873
2 changed files with 15 additions and 4 deletions

View File

@ -71,11 +71,11 @@ public final class JDOQLSerializer extends SerializerBase<JDOQLSerializer> {
}
};
private Expression<?> candidatePath;
private final Expression<?> candidatePath;
private List<Object> constants = new ArrayList<Object>();
private final List<Object> constants = new ArrayList<Object>();
private Stack<Map<Object,String>> constantToLabel = new Stack<Map<Object,String>>();
private final Stack<Map<Object,String>> constantToLabel = new Stack<Map<Object,String>>();
public JDOQLSerializer(JDOQLTemplates templates, Expression<?> candidate) {
super(templates);
@ -91,6 +91,7 @@ public final class JDOQLSerializer extends SerializerBase<JDOQLSerializer> {
return constants;
}
@Override
public Map<Object,String> getConstantToLabel() {
return constantToLabel.peek();
}
@ -157,7 +158,7 @@ public final class JDOQLSerializer extends SerializerBase<JDOQLSerializer> {
}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;

View File

@ -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);