-
jul05
Problema de ordenación al customizar búsquedas (inglés)
publicado por Enrique Medina Montenegro en Grails
384 visitas -
jun07
-
jul02
Vinculación de datos y asociaciones 1:M (inglés)
publicado por Enrique Medina Montenegro en Grails
341 visitas
SQ30 – Básico – Forzar la ordenación de las asociaciones
publicado por Enrique Medina Montenegro
Enrique Medina Montenegro
Con más de 14 años de experiencia en el mundo de las TI, donde comenzó desarrollando aplicaciones de escritorio en Delphi o Visual Basic, este Ingeniero en Informática por la Universidad de Alicante (1991-1996) ha ido perfilando su actividad profesional hacia las arquitecturas J2EE, donde siempre ha seguido muy atento, e incluso colaborado en ocasiones, con proyectos open-source como MyFaces, Spring, Hibernate, Groovy o Grails. Ocupando puestos desde Programador Junior hasta Arquitecto Senior de Soluciones, Enrique ha sido testigo de cómo ha ido evolucionando la tecnología en torno al desarrollo de aplicaciones web, adquiriendo un conocimiento y experiencia que le permiten evaluar con detalle las necesidades de cada proyecto y aplicar las herramientas que maximizan su productividad. Actualmente, Enrique se ha especializado en el framework de desarrollo Grails, y ejerce la Dirección Técnica de proyectos basados, entre otras, en esta tecnología.
¿Sabías que… puedes forzar la forma en que se ordenan los elementos de una asociación?
Mediante este mecanismo de configuración en GORM el usuario se ahorra la necesidad de tener que estar ordenando los elementos cada vez que los consulta. Así, por ejemplo, si tenemos la siguiente clase del dominio:
class Factura implements Serializable {
....
static hasMany = [lineas: LineaFactura]
}
}
Cuando queremos obtener las facturas con sus líneas ordenadas, ¿cómo podemos conseguirlo? Podríamos pensar que ejecutando una consulta HQL como la siguiente:
def facturas = Factura.executeQuery("from Factura f inner join f.lineas l order by l.numLinea desc")
Sin embargo, esta consulta nos devolvería las facturas ordenadas por los números de sus líneas, no las líneas de cada factura ordenadas por número de línea. En realidad, lo que estamos esperando se consigue utilizando la configuración GORM en la propia clase Factura:
class Factura implements Serializable {
....
static hasMany = [lineas: LineaFactura]
static mapping = {
lineas sort: 'numLinea', order: 'desc'
}
}
Recuerda: Puedes forzar el orden de los elementos de las asociaciones de tu clase de dominio utilizando la configuración ‘mapping’ con los atributos ‘sort’ y ‘order’.


Entradas relacionadas 
(2 votos, media: 4,50)
Comentarios recientes