mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#99 - ENH (419) : Simplify aggregation queries - part 2
This commit is contained in:
@@ -14,7 +14,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
public class TestAggregationCount extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
public void testFull() {
|
||||
|
||||
TEventOne one = new TEventOne("first");
|
||||
one.getLogs().add(new TEventMany("all", 1, 10));
|
||||
@@ -28,8 +28,7 @@ public class TestAggregationCount extends BaseTestCase {
|
||||
two.getLogs().add(new TEventMany("alf", 30, 13));
|
||||
Ebean.save(two);
|
||||
|
||||
|
||||
Query<TEventOne> query = Ebean.find(TEventOne.class)
|
||||
Query<TEventOne> query2 = Ebean.find(TEventOne.class)
|
||||
.select("name, count, totalUnits, totalAmount")
|
||||
.where()
|
||||
.startsWith("logs.description", "a")
|
||||
@@ -37,14 +36,14 @@ public class TestAggregationCount extends BaseTestCase {
|
||||
.ge("count", 1)
|
||||
.orderBy().asc("name");
|
||||
|
||||
List<TEventOne> list = query.findList();
|
||||
List<TEventOne> list = query2.findList();
|
||||
for (TEventOne eventOne : list) {
|
||||
System.out.println(eventOne.getId() + " " + eventOne.getName() + " count:" + eventOne.getCount() + " units:" + eventOne.getTotalUnits() + " amount:" + eventOne.getTotalAmount());
|
||||
}
|
||||
|
||||
assertThat(list).isNotEmpty();
|
||||
|
||||
String sql = query.getGeneratedSql();
|
||||
String sql = query2.getGeneratedSql();
|
||||
assertThat(sql).contains("select t0.id c0, t0.name c1, count(u1.*) c2, sum(u1.units) c3, sum(u1.units * u1.amount) c4 from tevent_one t0");
|
||||
assertThat(sql).contains("from tevent_one t0 join tevent_many u1 on u1.event_id = t0.id ");
|
||||
assertThat(sql).contains("where u1.description like ? ");
|
||||
@@ -52,4 +51,39 @@ public class TestAggregationCount extends BaseTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSelectOnly() {
|
||||
|
||||
Query<TEventOne> query0 = Ebean.find(TEventOne.class)
|
||||
.select("name, count, totalUnits, totalAmount");
|
||||
|
||||
query0.findList();
|
||||
assertThat(query0.getGeneratedSql()).contains("select t0.id c0, t0.name c1, count(u1.*) c2, sum(u1.units) c3, sum(u1.units * u1.amount) c4 from tevent_one t0");
|
||||
assertThat(query0.getGeneratedSql()).contains("group by t0.id, t0.name");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSelectWhere() {
|
||||
|
||||
Query<TEventOne> query0 = Ebean.find(TEventOne.class)
|
||||
.select("name, count, totalUnits, totalAmount")
|
||||
.where().gt("logs.description", "a").query();
|
||||
|
||||
query0.findList();
|
||||
assertThat(query0.getGeneratedSql()).contains("select t0.id c0, t0.name c1, count(u1.*) c2, sum(u1.units) c3, sum(u1.units * u1.amount) c4 from tevent_one t0");
|
||||
assertThat(query0.getGeneratedSql()).contains("group by t0.id, t0.name");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSelectHavingOrderBy() {
|
||||
|
||||
Query<TEventOne> query1 = Ebean.find(TEventOne.class)
|
||||
.select("name, count, totalUnits, totalAmount")
|
||||
.having().ge("count", 1)
|
||||
.orderBy().asc("name");
|
||||
|
||||
query1.findList();
|
||||
assertThat(query1.getGeneratedSql()).contains("having count(u1.*) >= ? order by t0.name");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user