按特定属性值排序hql结果

时间:2012-11-09 16:51:55

标签: grails groovy hql

我的域名包含名为“状态”的属性。 此属性可以包含“A”,“I”,“P”,“Pv”,“R”。

我有以下查询:

def list = Deal.findAll('from Deal as d')

如何订购结果,以便状态为“P”的行始终返回结果集的顶部? (我不在乎他们之后的顺序)。

2 个答案:

答案 0 :(得分:3)

这会做你想要的吗?通常我会在回答之前对其进行测试,但我没有简单的方法来执行此操作。

def list = Deal.findAll('''from Deal as d order by case d.property when 'P' then 0 else 1 end''')

答案 1 :(得分:1)

您可以将sort方法与比较器一起使用:

def list = Deal.findAll('from Deal as d').sort({a,b-> (a.status== 'P' && b.status != 'P') ? 0 : 1 })
相关问题