package org.tests.query;
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.MyAdHoc;
import org.tests.model.basic.ResetBasicData;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertNotNull;
public class TestMyAdHocSqlSelect extends BaseTestCase {
@Test
public void test() {
ResetBasicData.reset();
String sql = "select order_id, count(*) as detailCount from o_order_detail group by order_id";
RawSql rawSql = RawSqlBuilder
.parse(sql)
.columnMapping("order_id", "order.id")
.create();
Query<MyAdHoc> query = Ebean.find(MyAdHoc.class)
.setRawSql(rawSql)
.where().gt("order_id", 0)
.having().gt("detailCount", 0)
.query();
assertNotNull(query.findList());
assertThat(query.getGeneratedSql()).contains(" group by order_id having count(*) > ?");
}
@Test
public void test_when_explicitColumnMapping() {
ResetBasicData.reset();
String sql = "select order_id, count(*) as detail_count from o_order_detail group by order_id";
RawSql rawSql = RawSqlBuilder
.parse(sql)
.columnMapping("order_id", "order.id")
.columnMapping("detail_count", "detailCount")
.create();
Query<MyAdHoc> query = Ebean.find(MyAdHoc.class)
.setRawSql(rawSql)
.where().gt("order_id", 0)
.having().gt("detailCount", 0)
.query();
assertNotNull(query.findList());
assertThat(query.getGeneratedSql()).contains(" group by order_id having count(*) > ?");
}
}