diff --git a/src/test/java/com/avaje/ebeaninternal/server/core/DefaultServer_createOrmQueryRequestTest.java b/src/test/java/com/avaje/ebeaninternal/server/core/DefaultServer_createOrmQueryRequestTest.java index d61015f1e..d45ee0f5e 100644 --- a/src/test/java/com/avaje/ebeaninternal/server/core/DefaultServer_createOrmQueryRequestTest.java +++ b/src/test/java/com/avaje/ebeaninternal/server/core/DefaultServer_createOrmQueryRequestTest.java @@ -153,6 +153,20 @@ public class DefaultServer_createOrmQueryRequestTest extends BaseTestCase { assertThat(detail.getFetchPaths()).containsExactly("customer"); } + @Test + public void testJoinOrder_when_queryFetch_expect_getFetchPaths_doesNotIncludeQueryJoin_via_fetchQuery() { + + Query query = Ebean.find(Order.class) + .select("status, orderDate") + .fetch("customer", "name") + .fetchQuery("details"); + + OrmQueryRequest queryRequest = queryRequest(query); + OrmQueryDetail detail = queryRequest.getQuery().getDetail(); + + assertThat(detail.getFetchPaths()).containsExactly("customer"); + } + @Test public void testJoinOrder_when_lazyFetch_expect_getFetchPaths_doesNotIncludeQueryJoin() { @@ -167,6 +181,20 @@ public class DefaultServer_createOrmQueryRequestTest extends BaseTestCase { assertThat(detail.getFetchPaths()).containsExactly("customer"); } + @Test + public void testJoinOrder_when_lazyFetch_expect_getFetchPaths_doesNotIncludeQueryJoin_via_fetchLazy() { + + Query query = Ebean.find(Order.class) + .select("status, orderDate") + .fetch("customer", "name") + .fetchLazy("details"); + + OrmQueryRequest queryRequest = queryRequest(query); + OrmQueryDetail detail = queryRequest.getQuery().getDetail(); + + assertThat(detail.getFetchPaths()).containsExactly("customer"); + } + @Test public void testJoinOrder_when_lazyFetchAndHasChildren_expect_getFetchPaths_doesNotIncludeJoinOrChild() { diff --git a/src/test/java/com/avaje/ebeaninternal/server/loadcontext/DLoadContextTest.java b/src/test/java/com/avaje/ebeaninternal/server/loadcontext/DLoadContextTest.java index e81c52d48..151d6a5da 100644 --- a/src/test/java/com/avaje/ebeaninternal/server/loadcontext/DLoadContextTest.java +++ b/src/test/java/com/avaje/ebeaninternal/server/loadcontext/DLoadContextTest.java @@ -49,6 +49,20 @@ public class DLoadContextTest extends BaseTestCase { assertThat(customer.secondaryBatchSize).isEqualTo(100); } + @Test + public void construct_when_fetchQuery_expect_100_batchSize_viaFetchQuery() { + + OrmQueryRequest queryRequest = queryRequest(query().fetchQuery("customer")); + queryRequest.initTransIfRequired(); + queryRequest.endTransIfRequired(); + + DLoadContext graphContext = (DLoadContext)queryRequest.getGraphContext(); + DLoadBeanContext customer = graphContext.getBeanContext("customer"); + + assertThat(customer.firstBatchSize).isEqualTo(100); + assertThat(customer.secondaryBatchSize).isEqualTo(100); + } + @Test public void construct_when_fetchQuery50_expect_50_batchSize() { diff --git a/src/test/java/com/avaje/tests/batchload/TestLazyLoadEmptyCollection.java b/src/test/java/com/avaje/tests/batchload/TestLazyLoadEmptyCollection.java index 9e72be21a..6a5196c50 100644 --- a/src/test/java/com/avaje/tests/batchload/TestLazyLoadEmptyCollection.java +++ b/src/test/java/com/avaje/tests/batchload/TestLazyLoadEmptyCollection.java @@ -26,8 +26,10 @@ public class TestLazyLoadEmptyCollection extends BaseTestCase { Ebean.save(c); - List list = Ebean.find(Customer.class).fetch("contacts", new FetchConfig().query(0)) - .fetch("contacts.notes", new FetchConfig().query(100)).findList(); + List list = Ebean.find(Customer.class) + .fetch("contacts", new FetchConfig().query(0)) + .fetch("contacts.notes", new FetchConfig().query(100)) + .findList(); for (Customer customer : list) { List contacts = customer.getContacts(); diff --git a/src/test/java/com/avaje/tests/batchload/TestSecondaryQueries.java b/src/test/java/com/avaje/tests/batchload/TestSecondaryQueries.java index 577a290a3..b064bf73f 100644 --- a/src/test/java/com/avaje/tests/batchload/TestSecondaryQueries.java +++ b/src/test/java/com/avaje/tests/batchload/TestSecondaryQueries.java @@ -2,6 +2,7 @@ package com.avaje.tests.batchload; import java.util.List; +import org.avaje.ebeantest.LoggedSqlCollector; import org.junit.Assert; import org.junit.Test; @@ -14,8 +15,59 @@ import com.avaje.tests.model.basic.Customer; import com.avaje.tests.model.basic.Order; import com.avaje.tests.model.basic.ResetBasicData; +import static org.assertj.core.api.Assertions.assertThat; + public class TestSecondaryQueries extends BaseTestCase { + @Test + public void fetchQuery() { + + ResetBasicData.reset(); + + LoggedSqlCollector.start(); + + Ebean.find(Order.class) + .select("status") + .fetchQuery("customer", "name") + .findList(); + + List sql = LoggedSqlCollector.stop(); + + assertThat(sql).hasSize(2); + assertThat(sql.get(0)).contains("select t0.id c0, t0.status c1, t0.kcustomer_id c2 from o_order t0"); + assertThat(sql.get(1)).contains("select t0.id c0, t0.name c1 from o_customer t0 where t0.id in"); + } + + @Test + public void fetchLazy() { + + ResetBasicData.reset(); + + LoggedSqlCollector.start(); + + List orders = Ebean.find(Order.class) + .select("status") + .fetchLazy("customer", "name") + .setMaxRows(10) + .findList(); + + List sql = LoggedSqlCollector.stop(); + + assertThat(sql).hasSize(1); + assertThat(sql.get(0)).contains("select t0.id c0, t0.status c1, t0.kcustomer_id c2 from o_order t0"); + + LoggedSqlCollector.start(); + + // invoke lazy loading + for (Order order : orders) { + order.getCustomer().getName(); + } + + sql = LoggedSqlCollector.stop(); + assertThat(sql).hasSize(1); + assertThat(sql.get(0)).contains("select t0.id c0, t0.name c1 from o_customer t0 where t0.id in"); + } + @Test public void testSecQueryOneToMany() {