2010-11-10 5 views
2

J'ai un problème avec les critères et la relation entre les objets. Je présente un schéma simple avant:Java: relations d'objets avec les critères (hibernation)

J'ai 2 objets:

A est le parent B est l'enfant avec un lien au parent.

Je sais comment créer une requête pour avoir B avec la restriction de A:

Criteria criteria = this.getSession().createCriteria(B.class); 
criteria.add(Property.forName("a.name").eq("test")); 

Mais mon problème est le suivant:

Comment récupérer tous les A objets avec la restricition d'un B sans lien direct entre A chez B?

Merci pour votre aide.

Répondre

0

Si vous ne disposez pas d'un lien direct entre A et B dans votre graphe d'objets, la seule façon de faire ce que vous voulez sera de créer une requête SQL personnalisée (ou HQL) dans vos critères.

similaires à

criteria.add (Restrictions.sqlRestriction("b.parent_id = a.id")) 

Vérifiez la documentation sur des critères pour plus d'informations.

+0

PS - Je viens griffonné ce code vers le bas sans l'essayer, je ne sais pas si cela fonctionne bien comme cela est - mais vous peut en fait ajouter des restrictions sql comme démontré. –