Ich habe die folgende Abfrage, die ID gerne von "raceDate" und von "RaceNo" asc. Ich kann herausfinden, wie man nach einem Feld sortiert, aber nicht nach zwei, irgendwelchen Ideen?Sortieren nach mehreren Feldern mit Kriterien in Grails
def list = {
params.max = Math.min(params.max ? params.max.toInteger() : 20, 100)
params.offset = params?.offset?.toInteger() ?: 0
params.sort = "raceDate"
params.order = params?.order ?: "asc"
def results = Race.createCriteria().list(
max: params.max,
offset: params.offset,
sort: params.sort,
order: params.order
) {
and {
if (params.raceNo && params.raceNo != '')
eq("raceNo", params.raceNo.toInteger())
if (params.country && params.country != '')
eq("country", params.country)
if (params.venue && params.venue != '')
eq("venue", params.venue)
if (params.raceType && params.raceType != '')
eq("raceType", params.raceType)
if (params.surface && params.surface != '')
eq("surface", params.surface)
if (params.officialGoing && params.officialGoing != '')
eq("officialGoing", params.officialGoing)
if (params.raceDateStart_year && params.raceDateStart_month && params.raceDateStart_day
&& params.raceDateEnd_year && params.raceDateEnd_month && params.raceDateEnd_day) {
String startInput = "${params.raceDateStart_year}/${params.raceDateStart_month}/${params.raceDateStart_day}"
Date startDate = jodaFormatter.parseDateTime(startInput).toDate();
String endInput = "${params.raceDateEnd_year}/${params.raceDateEnd_month}/${params.raceDateEnd_day}"
Date endDate = jodaFormatter.parseDateTime(endInput).toDate();
between("raceDate", startDate, endDate)
}
}
}
[ raceInstanceList:results, raceInstanceTotal:results.totalCount, params:params ]
}
Ich denke, Ihr Beispiel ein wenig geschnitten werden kann. Foo Klasse { String name int Alter } Dann fragen, wie verwende ich GORM Kriterien nach Namen zuerst zu bestellen, dann mit dem Alter? –
[bereits beantwortet hier] [1] [1]: http://stackoverflow.com/questions/326053/how-to-order-by-more-than-one-field-in-grails – havana59er