2008-09-29 6 views
2

Comment un objet peut-il être chargé via Hibernate en fonction d'une valeur de champ d'un objet membre? Par exemple, supposons que les classes suivantes existaient, avec un à une relation entre bar et foo:Hibernate - charge un objet basé sur le champ d'un objet membre

Foo { 
    Long id; 
} 

Bar { 
    Long id; 
    Foo aMember; 
} 

Comment pourrait-on utiliser Hibernate critères pour charger Bar si vous aviez seulement 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 Barre, mais cela semble inutile. Existe-t-il un moyen efficace de faire cela avec des critères, ou HQL est-il comme cela devrait être géré?

Répondre

3

Vous pouvez tout à fait utiliser des critères d'une manière efficace d'y parvenir:

session.createCriteria(Bar.class). 
     createAlias("aMember", "a"). 
     add(Restrictions.eq("a.id", fooId)); 

devrait faire l'affaire.

+0

Pour en savoir plus, consultez la page http://www.tutorialspoint.com/hibernate/hibernate_criteria_queries.htm – Decoded

0

Vous pouvez utiliser des critères ou HQL.

exemple HQL:

query = session.createQuery ("de Bar comme bar où bar.aMember.id =: fooid");

query.setParameter ("fooId", fooId);

Résultat de la liste = query.list();

Questions connexes