mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#210 - ENH: Add Query.setLazyLoadBatch(int size) method ... for per query control
This commit is contained in:
@@ -1,35 +1,30 @@
|
||||
package com.avaje.tests.query;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
import com.avaje.ebean.Expr;
|
||||
import com.avaje.ebean.Junction;
|
||||
import com.avaje.ebean.Query;
|
||||
import com.avaje.tests.model.basic.Customer;
|
||||
import com.avaje.tests.model.basic.ResetBasicData;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TestLimitQuery extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testHasManyWithLimit() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
Query<Customer> query = Ebean.find(Customer.class);
|
||||
query.setAutofetch(false);
|
||||
query.setFirstRow(0);
|
||||
query.setMaxRows(10);
|
||||
List<Customer> customers = Ebean.find(Customer.class)
|
||||
.setAutofetch(false)
|
||||
.setFirstRow(0)
|
||||
.setMaxRows(10)
|
||||
.where().like("name", "%A%")
|
||||
.findList();
|
||||
|
||||
Junction<Customer> junc = Expr.disjunction(query);
|
||||
junc.add(Expr.like("name", "%A%"));
|
||||
query.where(junc);
|
||||
// should at least find the "Cust NoAddress" customer
|
||||
Assert.assertTrue(customers.size() > 0);
|
||||
|
||||
List<Customer> customer = query.findList();
|
||||
Assert.assertTrue(customer.size() > 0); // should at least find the
|
||||
// "Cust NoAddress" customer
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,111 @@
|
||||
package com.avaje.tests.query.lazy;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
import com.avaje.ebean.QueryEachConsumer;
|
||||
import com.avaje.ebean.config.ServerConfig;
|
||||
import com.avaje.tests.model.basic.*;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class TestQueryDefaultBatchSize extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void test_findEach() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
Ebean.find(Order.class)
|
||||
.setLazyLoadBatchSize(2)
|
||||
.findEach(new QueryEachConsumer<Order>() {
|
||||
@Override
|
||||
public void accept(Order bean) {
|
||||
doStuff(bean);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_findEach_withFetch() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
Ebean.find(Order.class)
|
||||
.fetch("details", "id")
|
||||
.fetch("details.product", "sku")
|
||||
.fetch("customer")
|
||||
.fetch("customer.contacts")
|
||||
.setLazyLoadBatchSize(2)
|
||||
.findEach(new QueryEachConsumer<Order>() {
|
||||
@Override
|
||||
public void accept(Order bean) {
|
||||
doStuff(bean);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_findList() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
List<Order> orders =
|
||||
Ebean.find(Order.class)
|
||||
.setLazyLoadBatchSize(2)
|
||||
.findList();
|
||||
|
||||
for (Order order : orders) {
|
||||
doStuff(order);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_findList_withFetch() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
List<Order> orders =
|
||||
Ebean.find(Order.class)
|
||||
.fetch("details", "id")
|
||||
.fetch("details.product", "sku")
|
||||
.fetch("customer")
|
||||
.fetch("customer.contacts")
|
||||
.setLazyLoadBatchSize(2)
|
||||
.findList();
|
||||
|
||||
for (Order order : orders) {
|
||||
doStuff(order);
|
||||
}
|
||||
|
||||
new ServerConfig().setLazyLoadBatchSize();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_findList_lazyMany() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
List<Order> orders = Ebean.find(Order.class)
|
||||
.setLazyLoadBatchSize(100)
|
||||
.findList();
|
||||
|
||||
for (Order order : orders) {
|
||||
List<OrderDetail> details = order.getDetails();
|
||||
details.size();
|
||||
for (OrderDetail detail : details) {
|
||||
Product product = detail.getProduct();
|
||||
product.getSku();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void doStuff(Order order) {
|
||||
// invoke lazy loading
|
||||
Customer customer = order.getCustomer();
|
||||
System.out.println("do stuff: order:"+order.getId());
|
||||
System.out.println("... customer:"+customer.getName());
|
||||
|
||||
System.out.println("... contacts: "+customer.getContacts().size()+" details:"+order.getDetails().size());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user