Playframework 2.0 当
使用Ebean finder时,是否可以提供如下所示的order by语句:Playframework 2.0 当,playframework-2.0,ebean,Playframework 2.0,Ebean,使用Ebean finder时,是否可以提供如下所示的order by语句: ORDER BY CASE WHEN a = 'FOO' THEN 1 WHEN a = 'BAR' THEN 2 ELSE 99 END 这样的订购是可能的。我们所要做的就是添加瞬态字段,并用带有适当参数的@Formula对其进行注释 因此,模型类应该如下所示: @Entity public class A extends Model { public A
ORDER BY
CASE
WHEN a = 'FOO' THEN 1
WHEN a = 'BAR' THEN 2
ELSE 99
END
这样的订购是可能的。我们所要做的就是添加瞬态字段,并用带有适当参数的@Formula对其进行注释 因此,模型类应该如下所示:
@Entity
public class A extends Model {
public A(Long aId, String aA) {
id = aId;
a = aA;
}
@Id
public Long id;
@Required
public String a;
@Transient
@Formula(select = "(case when ${ta}.a = 'FOO' then 1 when a = 'BAR' THEN 2 else 99 end)")
Integer index;
public static Finder<Long,A> find = new Finder<Long,A>(Long.class, A.class);
}
@实体
公共A类扩展模型{
公共A(长辅助线、线aA){
id=援助;
a=aA;
}
@身份证
公共长id;
@必需的
公共字符串a;
@短暂的
@公式(select=“(当${ta}.a='FOO'时为case,当a='BAR'时为1,当a='BAR'时为2,则为end)”)
整数指数;
公共静态查找器find=新查找器(Long.class,A.class);
}
通过这种方式,我们创建了虚拟列“index”,并可以根据它进行排序
以下是示例性试验方法:
@Test
public void aTest() {
FakeApplication app = Helpers.fakeApplication(Helpers.inMemoryDatabase());
Helpers.start(app);
A a1 = new A(1L, "BAR");
A a2 = new A(2L, "XYZ");
A a3 = new A(3L, "FOO");
A a4 = new A(4L, "AAA");
A a5 = new A(5L, "FOO");
A a6 = new A(6L, "BAR");
a1.save();
a2.save();
a3.save();
a4.save();
a5.save();
a6.save();
List<A> list = Ebean.find(A.class).orderBy("index").findList();
for(A fa: list) {
System.out.println("fa.id:"+fa.id+" fa.a:"+fa.a);
}
System.out.println("-------------------------");
List<A> list1 = A.find.orderBy("index").findList();
for(A fa: list1) {
System.out.println("fa.id:"+fa.id+" fa.a:"+fa.a);
}
}
@测试
公共无效测试(){
FakeApplication app=Helpers.FakeApplication(Helpers.inMemoryDatabase());
Helpers.start(应用程序);
a1=新的A(1L,“BAR”);
a2=新的A(2L,“XYZ”);
a3=新的A(3L,“FOO”);
a4=新A(4L,“AAA”);
a5=新的A(5L,“FOO”);
a6=新的A(6L,“巴”);
a1.保存();
a2.保存();
a3.保存();
a4.保存();
a5.保存();
a6.保存();
List List=Ebean.find(A.class).orderBy(“index”).findList();
对于(fa:列表){
系统输出打印项次(“fa.id:+fa.id+”fa.a:+fa.a”);
}
System.out.println(“---------------------------”);
List list1=A.find.orderBy(“index”).findList();
对于(A fa:list1){
系统输出打印项次(“fa.id:+fa.id+”fa.a:+fa.a”);
}
}