mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
154 lines
4.6 KiB
Java
154 lines
4.6 KiB
Java
package org.tests.basic;
|
|
|
|
import io.ebean.BaseTestCase;
|
|
import io.ebean.Ebean;
|
|
import io.ebean.Query;
|
|
import io.ebean.RawSql;
|
|
import io.ebean.RawSqlBuilder;
|
|
import org.junit.Assert;
|
|
import org.junit.Test;
|
|
import org.tests.model.basic.OrderAggregate;
|
|
import org.tests.model.basic.ResetBasicData;
|
|
|
|
import java.util.List;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.junit.Assert.assertNotNull;
|
|
|
|
public class TestOrderTotalAmountReportBean extends BaseTestCase {
|
|
|
|
@Test
|
|
public void test() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
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";
|
|
|
|
RawSql rawSql = RawSqlBuilder.parse(sql).columnMapping("order_id", "order.id").create();
|
|
|
|
List<OrderAggregate> l0 =
|
|
Ebean.find(OrderAggregate.class)
|
|
.setRawSql(rawSql)
|
|
.findList();
|
|
|
|
for (OrderAggregate r0 : l0) {
|
|
r0.toString();
|
|
}
|
|
|
|
List<OrderAggregate> l2 = Ebean.createQuery(OrderAggregate.class)
|
|
.setRawSql(rawSql)
|
|
.where().gt("order.id", 0)
|
|
.having().lt("totalItems", 3).gt("totalAmount", 50).findList();
|
|
|
|
for (OrderAggregate r2 : l2) {
|
|
Assert.assertTrue(r2.getTotalItems() < 3);
|
|
}
|
|
|
|
}
|
|
|
|
@Test
|
|
public void test_when_aliasInUnderscore() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
String sql =
|
|
"select order_id, count(*) as total_items, sum(order_qty*unit_price) as total_amount \n" +
|
|
"from o_order_detail \n" +
|
|
"group by order_id";
|
|
|
|
RawSql rawSql = RawSqlBuilder.parse(sql)
|
|
.columnMapping("order_id", "order.id")
|
|
.create();
|
|
|
|
Query<OrderAggregate> query = Ebean.find(OrderAggregate.class)
|
|
.setRawSql(rawSql);
|
|
|
|
query.findList();
|
|
|
|
assertSql(query).contains("count(*) as total_items, sum(order_qty*unit_price) as total_amount");
|
|
}
|
|
|
|
@Test
|
|
public void test_when_aliasInCamelCase() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
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";
|
|
|
|
RawSql rawSql = RawSqlBuilder.parse(sql)
|
|
.columnMapping("order_id", "order.id")
|
|
.create();
|
|
|
|
Query<OrderAggregate> query = Ebean.find(OrderAggregate.class)
|
|
.setRawSql(rawSql);
|
|
|
|
query.findList();
|
|
|
|
assertSql(query).contains("count(*) as totalItems, sum(order_qty*unit_price) as totalAmount");
|
|
}
|
|
|
|
@Test
|
|
public void testDefaultNamedRawSql() {
|
|
|
|
Query<OrderAggregate> query = Ebean.find(OrderAggregate.class);
|
|
List<OrderAggregate> list = query.findList();
|
|
|
|
assertSql(query).contains("count(*) as total_items, sum(order_qty*unit_price) as total_amount");
|
|
assertNotNull(list);
|
|
}
|
|
|
|
@Test
|
|
public void testNamedRawSql() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
Query<OrderAggregate> query = Ebean.getDefaultServer().createNamedQuery(OrderAggregate.class, "withMax");
|
|
List<OrderAggregate> list = query.findList();
|
|
|
|
assertSql(query).contains("count(*) as total_items, sum(order_qty*unit_price) as total_amount, max(order_qty*unit_price) as maxAmount from o_order_detail");
|
|
assertNotNull(list);
|
|
}
|
|
|
|
@Test
|
|
public void testNamedRawSql_with_extraPredicates() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
Query<OrderAggregate> query = Ebean.getDefaultServer().createNamedQuery(OrderAggregate.class, "withMax");
|
|
List<OrderAggregate> list = query
|
|
.where().gt("order.id", 1)
|
|
.having().gt("totalItems", 1)
|
|
.order().desc("totalAmount")
|
|
.findList();
|
|
|
|
assertSql(query).contains("count(*) as total_items, sum(order_qty*unit_price) as total_amount, max(order_qty*unit_price) as maxAmount from o_order_detail");
|
|
assertSql(query).contains("from o_order_detail where order_id > ? group by order_id having count(*) > ? order by sum(order_qty*unit_price) desc");
|
|
assertNotNull(list);
|
|
}
|
|
|
|
@Test
|
|
public void testNamedRawSql_with_param() {
|
|
|
|
ResetBasicData.reset();
|
|
|
|
Query<OrderAggregate> query = Ebean.getDefaultServer().createNamedQuery(OrderAggregate.class, "withParam");
|
|
List<OrderAggregate> list = query
|
|
.setParameter("minId", 2)
|
|
.where().isNotNull("order.id")
|
|
.having().lt("totalAmount", 100)
|
|
.order().desc("totalAmount")
|
|
.setMaxRows(10)
|
|
.findList();
|
|
|
|
assertSql(query).contains("count(*) as totalItems, sum(order_qty*unit_price) as totalAmount, max(order_qty*unit_price) as maxAmount from o_order_detail");
|
|
assertSql(query).contains("from o_order_detail where id > ? and order_id is not null group by order_id having sum(order_qty*unit_price) < ? order by sum(order_qty*unit_price) desc");
|
|
assertNotNull(list);
|
|
}
|
|
}
|