Question

We have two tables Family and Member, the relation between these two is Family has set of members in it but member don't have any family relationship within it.

I wanted get member using dob and family for that I am using Hibernate criteria API's but I am not getting how to write join query since members don't have Family instance with it. So not able to use FetchMode. Any other way to achieve this ?

thanks in advance. - Ravi Nikam.

Was it helpful?

Solution 2

thank you guys, I have resolved this with one of my colleague as under

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();

results has list of members i requested.

OTHER TIPS

instead of trying to do

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

which is not possible, you could do the exact opposite

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

I know, it's HQL not Criteria, but that's what I'm more fluent with. It should be trivial to "translate" this HQL to Criteria though.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top