package org.tests.rawsql; import io.ebean.BaseTestCase; import io.ebean.Ebean; import io.ebean.Query; import io.ebean.RawSql; import io.ebean.RawSqlBuilder; import org.tests.model.basic.OrderAggregate; import org.tests.model.basic.OrderDetail; import org.tests.model.basic.ResetBasicData; import org.junit.Test; import java.util.List; import static org.assertj.core.api.StrictAssertions.assertThat; import static org.junit.Assert.assertNotNull; public class TestOrderReportTotal extends BaseTestCase { @Test public void test() { ResetBasicData.reset(); RawSql rawSql = getRawSql(); Query<OrderAggregate> query = Ebean.createQuery(OrderAggregate.class); List<OrderAggregate> list = query.setRawSql(rawSql).findList(); assertNotNull(list); Query<OrderAggregate> q2 = Ebean.createQuery(OrderAggregate.class).setRawSql(rawSql); q2.where().gt("id", 1); q2.having().gt("totalItems", 1); List<OrderAggregate> l2 = q2.findList(); assertNotNull(l2); } private RawSql getRawSql() { String sql = "select order_id, count(*) as totalItems, sum(order_qty*unit_price) as totalAmount \n" + "from o_order_detail \n" + "group by order_id"; return RawSqlBuilder.parse(sql).columnMapping("order_id", "order.id").create(); } @Test public void testOrderDetailCount() { ResetBasicData.reset(); int detailsCount = Ebean.find(OrderDetail.class) .where() .gt("order.id", 2) .istartsWith("order.customer.name", "rob") .findCount(); assertThat(detailsCount).isGreaterThan(0); } }