mirror of
https://github.com/ebean-orm/ebean.git
synced 2024-04-21 10:51:47 +00:00
#1620 - Support case statement in order by clause
This commit is contained in:
@@ -3,10 +3,14 @@ package org.tests.query.orderby;
|
||||
import io.ebean.BaseTestCase;
|
||||
import io.ebean.Ebean;
|
||||
import io.ebean.Query;
|
||||
import org.tests.model.basic.Order;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.tests.model.basic.Order;
|
||||
import org.tests.model.basic.ResetBasicData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
public class TestOrderByOnComplex extends BaseTestCase {
|
||||
|
||||
@@ -24,4 +28,18 @@ public class TestOrderByOnComplex extends BaseTestCase {
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOrderByCase() {
|
||||
|
||||
ResetBasicData.reset();
|
||||
|
||||
Query<Order> query = Ebean.find(Order.class)
|
||||
.orderBy("case when status=3 then 10 when status=2 then 11 else 99 end");
|
||||
|
||||
List<Order> list = query.findList();
|
||||
|
||||
assertThat(sqlOf(query)).contains("select t0.id, t0.status, t0.order_date, t0.ship_date, t1.name, t0.cretime, t0.updtime, t0.kcustomer_id from o_order t0 join o_customer t1 on t1.id = t0.kcustomer_id order by case when t0.status=3 then 10 when t0.status=2 then 11 else 99 end");
|
||||
assertThat(list).isNotEmpty();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import io.ebean.BaseTestCase;
|
||||
import io.ebean.OrderBy;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
@@ -15,6 +16,16 @@ import static org.junit.Assert.assertTrue;
|
||||
*/
|
||||
public class TestOrderByParse extends BaseTestCase {
|
||||
|
||||
@Test
|
||||
public void testParseRaw() {
|
||||
|
||||
OrderBy<Object> o1 = new OrderBy<>("case when status='N' then 1 when status='F' then 2 else 99 end");
|
||||
assertEquals(1, o1.getProperties().size());
|
||||
assertTrue(o1.getProperties().get(0).isAscending());
|
||||
assertThat(o1.toStringFormat()).isEqualTo("case when status='N' then 1 when status='F' then 2 else 99 end");
|
||||
assertThat(o1.getProperties().get(0).getProperty()).isEqualTo("case when status='N' then 1 when status='F' then 2 else 99 end");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testParsingOne() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user