Hibernate - charge un objet en fonction du champ d'un objet membre
Question
Comment charger un objet via Hibernate en fonction de la valeur de champ d’un objet membre? Par exemple, supposons que les classes suivantes existent, avec une relation un-à-un entre bar et foo:
Foo {
Long id;
}
Bar {
Long id;
Foo aMember;
}
Comment utiliser Hibernate Criteria pour charger Bar si vous n’avez que l’id de Foo?
La première chose qui me vint à l’esprit fut de charger l’objet Foo et de le définir comme critère pour charger l’objet Bar, mais cela semble inutile. Existe-t-il un moyen efficace de le faire avec Criteria ou bien HQL devrait-il être géré?
La solution
Vous pouvez absolument utiliser les critères de manière efficace pour y parvenir:
session.createCriteria(Bar.class).
createAlias("aMember", "a").
add(Restrictions.eq("a.id", fooId));
devrait faire l'affaire.
Autres conseils
Vous pouvez utiliser des critères ou HQL.
Exemple HQL:
Requête requête = session.createQuery ("de barre comme barre où bar.aMember.id =: fooId");
query.setParameter ("fooId", fooId);
Liste result = query.list ();