diff --git a/ebean-test/src/test/java/org/tests/rawsql/TestRawSqlQuerySelect.java b/ebean-test/src/test/java/org/tests/rawsql/TestRawSqlQuerySelect.java new file mode 100644 index 000000000..029b1ec53 --- /dev/null +++ b/ebean-test/src/test/java/org/tests/rawsql/TestRawSqlQuerySelect.java @@ -0,0 +1,42 @@ +package org.tests.rawsql; + +import io.ebean.DB; +import io.ebean.FetchGroup; +import io.ebean.RawSql; +import io.ebean.RawSqlBuilder; +import io.ebean.xtest.BaseTestCase; +import org.junit.jupiter.api.Test; +import org.tests.model.basic.ResetBasicData; +import org.tests.rawsql.transport.QuerySumResponse; +import org.tests.rawsql.transport.SampleReport; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class TestRawSqlQuerySelect extends BaseTestCase { + + @Test + public void testRawSQL() { + + ResetBasicData.reset(); + + RawSql rawSql = RawSqlBuilder.parse("select id, name, anniversary, city from (select c.id, c.name, c.anniversary, a.city from o_customer c left join o_address a ON a.id = c.billing_address_id order by c.id) w").create(); + + var query = DB.find(SampleReport.class); + query.setMaxRows(10); + + List list = query.findList(); + assertNotNull(list); + + String sumSql = "COUNT(1)::Long AS count, SUM(id) AS sum"; + + query.setRawSql(rawSql); + //query.select(sumSql); + query.select(FetchGroup.of(SampleReport.class, sumSql)); + + query.asDto(QuerySumResponse.class); + var countSum = query.findOneOrEmpty().orElseThrow(); + //assertThat((countSum instanceof QuerySumResponse)); + } +} diff --git a/ebean-test/src/test/java/org/tests/rawsql/transport/QuerySumResponse.java b/ebean-test/src/test/java/org/tests/rawsql/transport/QuerySumResponse.java new file mode 100644 index 000000000..d6a61b6f5 --- /dev/null +++ b/ebean-test/src/test/java/org/tests/rawsql/transport/QuerySumResponse.java @@ -0,0 +1,30 @@ +package org.tests.rawsql.transport; + +public class QuerySumResponse { + private long count; + private Double sum; + + public QuerySumResponse() { + } + + public QuerySumResponse(long count, Double sum) { + this.count = count; + this.sum = sum; + } + + public long getCount() { + return count; + } + + public void setCount(long count) { + this.count = count; + } + + public Double getSum() { + return sum; + } + + public void setSum(Double sum) { + this.sum = sum; + } +} diff --git a/ebean-test/src/test/java/org/tests/rawsql/transport/SampleReport.java b/ebean-test/src/test/java/org/tests/rawsql/transport/SampleReport.java new file mode 100644 index 000000000..a119896e8 --- /dev/null +++ b/ebean-test/src/test/java/org/tests/rawsql/transport/SampleReport.java @@ -0,0 +1,12 @@ +package org.tests.rawsql.transport; + +import javax.persistence.Entity; +import java.sql.Date; + +@Entity +public class SampleReport { + Long id; + String name; + Date anniversary; + String city; +}