diff --git a/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSQLQuery.java b/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSQLQuery.java index 9d7266bf7..7a7eeb479 100644 --- a/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSQLQuery.java +++ b/querydsl-sql/src/main/java/com/mysema/query/sql/AbstractSQLQuery.java @@ -482,10 +482,14 @@ public abstract class AbstractSQLQuery> extends Pr listeners.preExecute(context); rs = stmt.executeQuery(); - rs.next(); + boolean hasResult = rs.next(); listeners.executed(context); - return rs.getLong(1); + if (hasResult) { + return rs.getLong(1); + } else { + return 0; + } } catch (SQLException e) { onException(context, e); throw configuration.translate(queryString, constants, e); diff --git a/querydsl-sql/src/test/java/com/mysema/query/SelectBase.java b/querydsl-sql/src/test/java/com/mysema/query/SelectBase.java index df9fb20dd..7d1f1a1e4 100644 --- a/querydsl-sql/src/test/java/com/mysema/query/SelectBase.java +++ b/querydsl-sql/src/test/java/com/mysema/query/SelectBase.java @@ -610,6 +610,16 @@ public class SelectBase extends AbstractBaseTest { employee.salary.avg()); } + @Test + public void Having_Count() { + //Produces empty resultset https://github.com/querydsl/querydsl/issues/1055 + query().from(employee) + .innerJoin(employee2) + .groupBy(employee.id) + .having(Wildcard.count.eq(4L)) + .listResults(employee.id, employee.firstname); + } + @SuppressWarnings("unchecked") @Test(expected=IllegalArgumentException.class) public void IllegalUnion() throws SQLException {