我需要根据" Participant_Name"的排序显示列表。领域。我使用下面的代码从域类中获取数据并将其发送到我的gsp -
def eventName = "${params.EventNameList}"
if(!params.max)
{
params.max = 5
}
def ParticipantRec = EventList.findAllByEvent_Name(
eventName, params).sort { it.Participant_Name }
没有这样的错误,但记录没有按排序顺序排列。而是,列表按记录范围排序。例如,如果列表是 -
["SUNNY","RAHUL",ANIL","BABY","AKSHAY","CAD","JOSEPH")
然后输出为 -
"ANIL","BABY","CAD","RAHUL","SUNNY"
然后
"AKSHAY","JOSEPH"
答案 0 :(得分:3)
如果你在调用finder调用的结果时调用sort,并且传入了max,那么你得到的是排序的第一个max
条目。而是以与您已经传递max
相同的方式传递分页和排序信息。请参阅Grails在线文档中的findAllBy示例:
def results = Book.findAllByTitle("The Shining",
[max: 10, sort: "title", order: "desc", offset: 100])
答案 1 :(得分:1)
除了Nathan提到的调整动态查找器方法对环境事件有用之外,您还可以告诉您的域类按映射闭包中的指定属性自动排序。
例如,如果您总是希望EventList.list()返回按Participant_Name排序的所有EventList对象的列表,则可以按如下方式设置映射闭包:
class EventList {
String Participant_Name
static mapping = {
sort "Participant_Name"
}
}
这样就可以在任何时候查询EventList对象,除非另有说明,否则它们将按Participant_Name排序。请注意,默认情况下,它们将按升序排序,在此示例中将按字母顺序排序。如果您想自定义此行为,则需要按如下方式声明它
static mapping = {
sort Participant_Name: "desc" // or 'asc' for ascending, which is the default
}