sort findallwhere desc array sorting grails groovy

sorting - findallwhere - groovy sort desc



Ordenamiento de mapas Grails en mĂșltiples campos:: Ordenamiento maravilloso en entradas de mapas mĂșltiples (3)

Atontado en este. En Grails parece que no se puede definir una ordenación predeterminada en varias columnas en el mapeo de dominios a la asignación estática = {sort ''prop1 desc, prop2 asc''}, o {sort ([prop1: ''desc'', prop2: ''asc'']) }. Sólo la primera columna se ordena, cojo.

De manera similar, cuando se trata de ordenar Groovy una consulta de búsqueda de Grails en varias columnas, la segunda ordenación anula la primera.

def list = [[rowNum: 2, position: 3], [rowNum: 1, position: 2], [rowNum: 3, position: 1]]

list.sort {it.rowNum} .sort {it.position}

Obviamente falta el barco en este último caso, el tipo groovy. He visto publicaciones re implementando comparables, pero buscando algo más conciso si es posible.


Aquí hay una solución maravillosa. Todavía esencialmente implementando un Comparador sin embargo.

list.sort { map1, map2 -> map1.rowNum <=> map2.rowNum ?: map1.position <=> map2.position }


Gracias al enlace de GreenGiant, vemos que el problema está cerrado como se ha solucionado en la versión 2.3.

También hay código de ejemplo:

static mapping = { sort([lastname:''asc'', name:''asc'']) }

Está funcionando para mí en 2.4.3.


Puede utilizar String.format si conoce la longitud máxima. Asumí una longitud máxima de 10

list.sort { String.format(''%010d%010d'', it.rowNum, it.position) }