Question

Nous avons deux tables Famille et Membre, la relation entre ces deux familles est constituée de plusieurs membres, mais aucun membre n’a de relation familiale.

Je souhaitais que les membres utilisent dob ??et family pour cela. J'utilise les API de critères d'Hibernate, mais je ne comprends pas comment écrire une requête de jointure, car les membres ne possèdent pas d'instance Family. Donc pas capable d'utiliser FetchMode. Un autre moyen d'y parvenir?

merci d'avance. - Ravi Nikam.

Était-ce utile?

La solution 2

merci les gars, je l'ai résolu avec un de mes collègues comme sous

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

résultats a la liste des membres que j'ai demandés.

Autres conseils

au lieu d'essayer de faire

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

ce qui n'est pas possible, vous pouvez faire exactement le contraire

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

Je sais, ce n'est pas HQL, mais Criteria, mais c'est ce que je parle le plus couramment. Il devrait être trivial de "traduire" cette HQL aux critères cependant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top