#1405 - ENH: Add SqlQuery.findSingleAttribute() ... for returning single scalar values via SqlQuery

This commit is contained in:
rob bygrave
2018-06-07 22:17:01 +12:00
parent eba1003c19
commit ffa8268125
12 changed files with 162 additions and 13 deletions
@@ -10,6 +10,8 @@ import org.junit.Test;
import org.tests.model.basic.Order;
import org.tests.model.basic.ResetBasicData;
import java.math.BigDecimal;
import java.time.OffsetDateTime;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
@@ -18,6 +20,49 @@ import static org.junit.Assert.assertEquals;
public class SqlQueryTests extends BaseTestCase {
@Test
public void findSingleAttribute_decimal() {
ResetBasicData.reset();
String sql = "select max(unit_price) from o_order_detail where order_qty > ?";
BigDecimal maxPrice = Ebean.createSqlQuery(sql)
.setParameter(1, 2)
.findSingleAttribute(BigDecimal.class);
assertThat(maxPrice).isNotNull();
}
@Test
public void findSingleAttribute_long() {
ResetBasicData.reset();
String sql = "select count(order_qty) from o_order_detail where unit_price > ?";
long count = Ebean.createSqlQuery(sql)
.setParameter(1, 2)
.findSingleAttribute(Long.class);
assertThat(count).isGreaterThan(0);
}
@Test
public void findSingleAttribute_OffsetDateTime() {
ResetBasicData.reset();
String sql = "select min(updtime) from o_order_detail where unit_price > ? and updtime is not null";
OffsetDateTime minCreated = Ebean.createSqlQuery(sql)
.setParameter(1, 2)
.findSingleAttribute(OffsetDateTime.class);
assertThat(minCreated).isBefore(OffsetDateTime.now());
}
@Test
public void newline_replacedInLogsOnly() {