Comment utiliser les critères de jonction en veille prolongée selon la situation
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.
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.