mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#733 - RawSqlBuilder.columnMapping() not working using DB column alias ... java.lang.IllegalArgumentException: DB Column [detail_count] not found in mapping.
This commit is contained in:
@@ -60,29 +60,29 @@ public class TestRawSqlColumnParsing extends TestCase {
|
||||
|
||||
assertEquals(5, mapping.size());
|
||||
|
||||
Column c = mapping.get("a");
|
||||
Column c = mapping.get("a0");
|
||||
|
||||
assertEquals("a",c.getDbColumn());
|
||||
assertEquals(0, c.getIndexPos());
|
||||
assertEquals("a0",c.getPropertyName());
|
||||
|
||||
c = mapping.get("b");
|
||||
c = mapping.get("b1");
|
||||
assertEquals("b",c.getDbColumn());
|
||||
assertEquals(1, c.getIndexPos());
|
||||
assertEquals("b1",c.getPropertyName());
|
||||
|
||||
c = mapping.get("c");
|
||||
c = mapping.get("c2");
|
||||
assertEquals("c",c.getDbColumn());
|
||||
assertEquals(2, c.getIndexPos());
|
||||
assertEquals("c2",c.getPropertyName());
|
||||
|
||||
c = mapping.get("d");
|
||||
c = mapping.get("d3");
|
||||
assertEquals("d",c.getDbColumn());
|
||||
assertEquals(3, c.getIndexPos());
|
||||
assertEquals("d3",c.getPropertyName());
|
||||
|
||||
|
||||
c = mapping.get("e");
|
||||
c = mapping.get("e4");
|
||||
assertEquals("e",c.getDbColumn());
|
||||
assertEquals(4, c.getIndexPos());
|
||||
assertEquals("e4",c.getPropertyName());
|
||||
@@ -96,29 +96,29 @@ public class TestRawSqlColumnParsing extends TestCase {
|
||||
|
||||
assertEquals(5, mapping.size());
|
||||
|
||||
Column c = mapping.get("a");
|
||||
Column c = mapping.get("a0");
|
||||
|
||||
assertEquals("a",c.getDbColumn());
|
||||
assertEquals(0, c.getIndexPos());
|
||||
assertEquals("a0",c.getPropertyName());
|
||||
|
||||
c = mapping.get("b");
|
||||
c = mapping.get("b1");
|
||||
assertEquals("b",c.getDbColumn());
|
||||
assertEquals(1, c.getIndexPos());
|
||||
assertEquals("b1",c.getPropertyName());
|
||||
|
||||
c = mapping.get("MONTH(MAKEDATE(2015, 241))");
|
||||
c = mapping.get("m2");
|
||||
assertEquals("MONTH(MAKEDATE(2015, 241))",c.getDbColumn());
|
||||
assertEquals(2, c.getIndexPos());
|
||||
assertEquals("m2",c.getPropertyName());
|
||||
|
||||
c = mapping.get("d");
|
||||
c = mapping.get("d3");
|
||||
assertEquals("d",c.getDbColumn());
|
||||
assertEquals(3, c.getIndexPos());
|
||||
assertEquals("d3",c.getPropertyName());
|
||||
|
||||
|
||||
c = mapping.get("e");
|
||||
c = mapping.get("e4");
|
||||
assertEquals("e",c.getDbColumn());
|
||||
assertEquals(4, c.getIndexPos());
|
||||
assertEquals("e4",c.getPropertyName());
|
||||
@@ -132,29 +132,29 @@ public class TestRawSqlColumnParsing extends TestCase {
|
||||
|
||||
assertEquals(5, mapping.size());
|
||||
|
||||
Column c = mapping.get("a");
|
||||
Column c = mapping.get("a0");
|
||||
|
||||
assertEquals("a",c.getDbColumn());
|
||||
assertEquals(0, c.getIndexPos());
|
||||
assertEquals("a0",c.getPropertyName());
|
||||
|
||||
c = mapping.get("'b'");
|
||||
c = mapping.get("b1");
|
||||
assertEquals("'b'",c.getDbColumn());
|
||||
assertEquals(1, c.getIndexPos());
|
||||
assertEquals("b1",c.getPropertyName());
|
||||
|
||||
c = mapping.get("\"c(blah)\"");
|
||||
c = mapping.get("c2");
|
||||
assertEquals("\"c(blah)\"",c.getDbColumn());
|
||||
assertEquals(2, c.getIndexPos());
|
||||
assertEquals("c2",c.getPropertyName());
|
||||
|
||||
c = mapping.get("d");
|
||||
c = mapping.get("d3");
|
||||
assertEquals("d",c.getDbColumn());
|
||||
assertEquals(3, c.getIndexPos());
|
||||
assertEquals("d3",c.getPropertyName());
|
||||
|
||||
|
||||
c = mapping.get("e");
|
||||
c = mapping.get("e4");
|
||||
assertEquals("e",c.getDbColumn());
|
||||
assertEquals(4, c.getIndexPos());
|
||||
assertEquals("e4",c.getPropertyName());
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.avaje.tests.basic;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.avaje.ebean.Query;
|
||||
import com.avaje.ebean.RawSql;
|
||||
import com.avaje.ebean.RawSqlBuilder;
|
||||
import org.junit.Assert;
|
||||
@@ -12,6 +13,8 @@ import com.avaje.ebean.Ebean;
|
||||
import com.avaje.tests.model.basic.OrderAggregate;
|
||||
import com.avaje.tests.model.basic.ResetBasicData;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TestOrderTotalAmountReportBean extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
@@ -46,4 +49,29 @@ public class TestOrderTotalAmountReportBean extends BaseTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_when_explicitMapping() {
|
||||
|
||||
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")
|
||||
.columnMapping("total_items", "totalItems")
|
||||
.columnMapping("total_amount", "totalAmount")
|
||||
.create();
|
||||
|
||||
Query<OrderAggregate> query = Ebean.find(OrderAggregate.class)
|
||||
.setRawSql(rawSql);
|
||||
|
||||
query.findList();
|
||||
|
||||
assertThat(query.getGeneratedSql()).contains("count(*) as total_items, sum(order_qty*unit_price) as total_amount");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
package com.avaje.tests.query;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.avaje.ebean.RawSql;
|
||||
import com.avaje.ebean.RawSqlBuilder;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.avaje.ebean.BaseTestCase;
|
||||
import com.avaje.ebean.Ebean;
|
||||
import com.avaje.ebean.Query;
|
||||
import com.avaje.ebean.RawSql;
|
||||
import com.avaje.ebean.RawSqlBuilder;
|
||||
import com.avaje.tests.model.basic.MyAdHoc;
|
||||
import com.avaje.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 {
|
||||
|
||||
@@ -20,12 +20,44 @@ public class TestMyAdHocSqlSelect extends BaseTestCase {
|
||||
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();
|
||||
|
||||
List<MyAdHoc> list = Ebean.find(MyAdHoc.class).setRawSql(rawSql).where().gt("order_id", 0).having()
|
||||
.gt("detailCount", 0).findList();
|
||||
RawSql rawSql = RawSqlBuilder
|
||||
.parse(sql)
|
||||
.columnMapping("order_id", "order.id")
|
||||
.create();
|
||||
|
||||
Assert.assertNotNull(list);
|
||||
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(*) > ?");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user