Pregunta

Tenemos dos tablas Familia y Miembro, la relación entre estos dos es Familia tiene un conjunto de miembros, pero el miembro no tiene ninguna relación familiar dentro.

Quería que el miembro usara dob y family para eso estoy usando los criterios de API de Hibernate pero no entiendo cómo escribir una consulta de unión ya que los miembros no tienen una instancia de Family con ella. Así que no puedo usar FetchMode. ¿Alguna otra forma de lograr esto?

gracias de antemano. - Ravi Nikam.

¿Fue útil?

Solución 2

gracias chicos, he resuelto esto con uno de mis colegas como en

DetachedCriteria subquery = DetachedCriteria
            .forClass(Family.class, "family")
            .add(Expression.eq("family.id", family.getId()));

                subquery.createAlias("members", "members")
                    .add(Restrictions.eqProperty("members.id", "m.id"))
                    .add(Expression.eq("members.DOB",Date));

                subquery.setProjection(Property.forName("members.id"));

                Criteria crit = session.createCriteria(Member.class, "m")
                        .add(Subqueries.propertyIn("m.id", subquery));


            results = crit.list();

resultados tiene una lista de miembros que solicité.

Otros consejos

en lugar de intentar hacer

from Member m join m.family f where f.name = ?

que no es posible, podrías hacer exactamente lo contrario

select m from Family f join f.members m where f.name = ?

Lo sé, no es Criterios HQL, pero eso es con lo que soy más fluido. Debería ser trivial "traducir" este HQL a Criterios sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top