3

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

我有以下查询:

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

如何对结果进行排序,以便始终在结果集顶部返回状态为“P”的行?(我不在乎它们之后的顺序是什么)。

4

2 回答 2

3

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

def list = Deal.findAll('''from Deal as d order by case d.property when 'P' then 0 else 1 end''')
于 2012-11-09T17:45:14.293 回答
1

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

def list = Deal.findAll('from Deal as d').sort({a,b-> (a.status== 'P' && b.status != 'P') ? 0 : 1 })
于 2012-11-09T17:49:58.867 回答