diff --git a/src/main/java/com/avaje/ebeaninternal/server/query/CQueryBuilder.java b/src/main/java/com/avaje/ebeaninternal/server/query/CQueryBuilder.java index 5dcfe500a..bf733cd5a 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/query/CQueryBuilder.java +++ b/src/main/java/com/avaje/ebeaninternal/server/query/CQueryBuilder.java @@ -123,10 +123,8 @@ public class CQueryBuilder implements Constants { // always set the order by to null for row count query query.setOrder(null); - if (query.isRawSql()) { - query.setFirstRow(0); - query.setMaxRows(0); - } + query.setFirstRow(0); + query.setMaxRows(0); ManyWhereJoins manyWhereJoins = query.getManyWhereJoins(); @@ -281,9 +279,7 @@ public class CQueryBuilder implements Constants { OrmQueryDetail detail = new OrmQueryDetail(); // transfer PathProperties into OrmQueryDetail - Iterator pathIt = pathProps.getPaths().iterator(); - while (pathIt.hasNext()) { - String path = pathIt.next(); + for (String path : pathProps.getPaths()) { Set props = pathProps.get(path); detail.getChunk(path, true).setDefaultProperties(null, props); } diff --git a/src/test/java/com/avaje/tests/query/other/TestQueryRowCountWithMany.java b/src/test/java/com/avaje/tests/query/other/TestQueryRowCountWithMany.java index 4a0c82f7f..240039bea 100644 --- a/src/test/java/com/avaje/tests/query/other/TestQueryRowCountWithMany.java +++ b/src/test/java/com/avaje/tests/query/other/TestQueryRowCountWithMany.java @@ -67,4 +67,29 @@ public class TestQueryRowCountWithMany extends BaseTestCase { } + + + @Test + public void testWithFirstRowsMaxRows() { + + ResetBasicData.reset(); + + Long productId = 1L; + + Query query = Ebean.find(Order.class) + .fetch("details") + .where().eq("details.product.id", productId) + .setFirstRow(2) + .setMaxRows(20) + .orderBy("cretime asc"); + + LoggedSqlCollector.start(); + query.findRowCount(); + + List sqlLogged = LoggedSqlCollector.stop(); + + Assert.assertEquals(1, sqlLogged.size()); + Assert.assertTrue(sqlLogged.get(0).contains("select count(*) from ( select distinct t0.id c0 from o_order t0 join o_order_detail u1 on u1.order_id = t0.id where u1.product_id = ? )")); + + } }