Diego, La misma pero dada vuelta (arrancando de AttributeUser) y usando OR... que tonto que soy... intento escribirla aqui select distinct u from AttributeUser au join au.User u join au.Attribute a where (a.Name = "Sexo" and au.Value = "F") or (a.Name = "Edad" and au.Value between 15 and 25)
Igual el sistema ese me suena a bergamotta... Yo usería un dynamic-component e implementaría la DynamicEntity para manejar todo con clases de .NET4. 2011/2/28 Diego Mijelshon <[email protected]> > Esta es una forma posible: > > select distinct u from User u, AttributeUser a1, AttributeUser a2 where > u = a1.User and a1.Attribute.Name = 'Sexo' and a1.Value = 'F' and u = > a2.User and a2.Attribute.Name = 'Edad' and a2.Value between '15' and '25' > > > Diego > > > 2011/2/28 Gustavo Garcia <[email protected]> > > Estimados, muchas gracias por las muy rápidas respuestas! >> A continuación le respondo a cada uno: >> >> rodmarquez21: Lo intentaré ahora mismo y te cuento! >> Fabio: Quizás no sea HQL, pero intento hacer que si sea :) >> Diego: Primero explicaré la situación y luego te muestro las clases >> >> Tengo la clase User (asociada a tabla "User"). Un user puede tener varias >> caracteristicas (Edad, Sexo, Region, Estado civil, etc), >> entonces tengo una clase "Attribute", básicamente con un nombre ("sexo", >> "edad", "region", etc) y una clase AttributeUser, con un User, Attribute y >> un valor, >> para decir "el usuario U, tiene el Atributo A, con valor V" (ej: Juan es >> de sexo masculino). >> >> Estos atributos son muchos e irán aumentando en el tiempo, es por esto que >> no le puedo agregar simplemente las propiedades "Edad, Sexo, Region, etc" a >> la >> clase "User" (se llenará de NULLs la BD y tendría que estar modificando la >> aplicación cada vez que queramos incluir un nuevo atributo. >> >> Ahora, necesito obtener los conjuntos de usuarios que cumplen con ciertas >> características, por ejemplo "todos los usuarios hombre O mujer, con edad >> entre 15 y 25" >> >> Las clases son estas: >> >> >> >> public class User >> { >> public virtual int Id { get; private set; } >> public virtual string Username { get; set; } >> public virtual string FirstName { get; set; } >> public virtual string LastName { get; set; } >> } >> public class Attribute >> { >> public virtual int Id { get; private set; } >> public virtual string Name { get; set; } >> } >> public class AttributeUser >> { >> public virtual int Id { get; private set; } >> public virtual User User { get; set; } >> public virtual Attribute Attribute { get; set; } >> public virtual string Value { get; set; } >> } >> >> >> Bueno, eso es todo. Espero no estar tan mal orientado. >> Gracias de antemano! >> >> -- >> Para escribir al Grupo, hágalo a esta dirección: >> [email protected] >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano >> > > -- > Para escribir al Grupo, hágalo a esta dirección: > [email protected] > Para más, visite: http://groups.google.com/group/NHibernate-Hispano > -- Fabio Maulo -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
