Jose Fabricio Rojas | 19 Aug 04:08
Gravatar

Ordenar Listas


Hola gente,
Bueno mi problemas es el siguiente , estoy generando un menu
dinamico(desde la bd) , me hice una demo con un datatable y funciona
normal, pero la idea es hacerlo en NH. mi problema es que las listas
de objetos que obtengo no las devuelve ordenadas, en mi consulta HQL,
le hago un order by , pero aun asi no la devuelve ordenada...
la consulta es la siguiente: " select distinct o from UserRolEntity ur
join ur.ROL r, RolPermissionEntity p join p.OBJECTS o where
p.ROL.N_ROLE =:N_ROLE and ur.USER.ID_USER =:ID_USER order by
o.ID_OBJECT"
mi algoritmo de generacion de menu , es recursivo y tengo un campo
padre y uno hijo , pero para hacer mis iteraciones necesito tener mi
fuente de datos ordenadas , Hay una forma mas explicita de traer mi
lista de objetos ordenados?
Muchas Gracias.
Jose Fabricio Rojas
http://devsofx.wordpress.com

--~--~---------~--~----~------------~-------~--~----~
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano <at> googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
-~----------~----~----~----~------~----~------~--~---

Carlos Peix | 19 Aug 13:53

Re: Ordenar Listas


Hola Jose,

Antes de ir con el texto, aclaro que estoy respondiendo de acuerdo a mi
interpretacion del contexto de Jose, es decir, un menu, asumiendo que la
lista de hijos de un nodo no sera mayor que 100 items. Esta respuesta podria
ser totalmente incorrecta en otro contexto.

No creo que sea la respuesta que esperas, pero en mi opinion no deberias
asignarle la responsabilidad de ordenar al ORM por dos motivos: a) es el
camino menos flexible, en .NET tendrias mas posibilidades y 2) estas
mezclando responsabilidades en la lista persistente, por ejemplo, que pasa
si necesitas la misma lista ordenada por dos criterios distintos?

Hay un post mio en esta lista donde explico en detalle lo que hice, pero
basicamente la idea es tener una colección privada, que contiene los
elementos persistentes y agregar un metodo o propiedad que devuelva esa
lista ordenada por el criterio que corresponda.

Esto tiene varias ventajas, por ejemplo, te permite devolver un subconjunto
de los hijos, devolverlos ordenados por distintos criterios, etc. Tambien,
al colocar metodos especificos, los nombres de los mismos podrian ser mas
significativos para el programador.

Saludos

Carlos Peix 

-----Mensaje original-----
De: NHibernate-Hispano <at> googlegroups.com
(Continue reading)


Gmane