diff --git a/querydsl-core/src/main/java/com/querydsl/core/support/QueryMixin.java b/querydsl-core/src/main/java/com/querydsl/core/support/QueryMixin.java index 473847cd3..1e6c4b33d 100644 --- a/querydsl-core/src/main/java/com/querydsl/core/support/QueryMixin.java +++ b/querydsl-core/src/main/java/com/querydsl/core/support/QueryMixin.java @@ -204,13 +204,14 @@ public class QueryMixin { } public final T groupBy(Expression e) { + e = convert(e, Role.GROUP_BY); metadata.addGroupBy(e); return self; } public final T groupBy(Expression... o) { for (Expression e : o) { - metadata.addGroupBy(e); + groupBy(e); } return self; } diff --git a/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java b/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java index cb4700371..ceab8eaa2 100644 --- a/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java +++ b/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java @@ -1195,6 +1195,12 @@ public abstract class AbstractJPATest { assertEquals(0L, query().from(show).where(show.acts.contains("X", "X")).fetchCount()); } + @Test + public void map_groupBy() { + QShow show = QShow.show; + assertEquals(1, query().from(show).select(show.acts.get("X")).groupBy(show.acts.get("a")).fetchCount()); + } + @Test @Ignore public void map_join() { diff --git a/querydsl-jpa/src/test/java/com/querydsl/jpa/MapOperationsTest.java b/querydsl-jpa/src/test/java/com/querydsl/jpa/MapOperationsTest.java new file mode 100644 index 000000000..3d405a395 --- /dev/null +++ b/querydsl-jpa/src/test/java/com/querydsl/jpa/MapOperationsTest.java @@ -0,0 +1,30 @@ +/* + * Copyright 2015, The Querydsl Team (http://www.querydsl.com/team) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0 + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.querydsl.jpa; + +import static com.querydsl.jpa.Constants.*; +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import com.querydsl.jpa.impl.JPAQuery; + +public class MapOperationsTest extends AbstractQueryTest { + + @Test + public void map_with_groupBy() { + assertEquals("select show_acts_0\nfrom Show show\n left join show.acts as show_acts_0 on key(show_acts_0) = ?1\ngroup by show_acts_0", new JPAQuery().from(show).select(show.acts.get("A")).groupBy(show.acts.get("A")).toString()); + } + +}