-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 6 posts ] 
Author Message
 Post subject: Criteria, forcer un join
PostPosted: Mon Sep 12, 2005 8:19 am 
Regular
Regular

Joined: Tue Oct 07, 2003 1:13 pm
Posts: 70
Location: Paris, France
Hibernate version: 3.1

Hello,
J'aimerais savoir comment forcer un join dans un Criteria.
Je m'explique, je translate des Query en Criteria, comment passer de celle-ci en Criteria ?
s.createQuery("from Class0 as c0 join c0.assoc1 as c1")

-> s.createCriteria(Class0,"c0"), il me manque la condition du join, en sachant qu'aucun critère autre que la jointure ne s'applique.

Merci de votre aide.

Richard


Top
 Profile  
 
 Post subject:
PostPosted: Mon Sep 12, 2005 8:41 am 
Newbie

Joined: Wed Sep 07, 2005 5:54 am
Posts: 16
Location: Chambéry
Bonjour,

comme vu http://forum.hibernate.org/viewtopic.php?p=2186938 la solution à ton problème devient alors :

sess.createCriteria(Class0.class).createAlias("assoc1", "c1")

En espérant que cela t'aide,

Xavier


Top
 Profile  
 
 Post subject:
PostPosted: Mon Sep 12, 2005 8:49 am 
Regular
Regular

Joined: Tue Oct 07, 2003 1:13 pm
Posts: 70
Location: Paris, France
Merci pour ta réponse rapide, mais le lien que tu m'as donné en référence à un autre topic ne semble pas cibler mon problème.
Je n'ai aucun critère qui forcerait la jointure, et je me demande si un simple createAlias crée un join implicite ?


Top
 Profile  
 
 Post subject:
PostPosted: Mon Sep 12, 2005 9:41 am 
Newbie

Joined: Wed Sep 07, 2005 5:54 am
Posts: 16
Location: Chambéry
hum, hum, je vois. A tester en effet !


Top
 Profile  
 
 Post subject:
PostPosted: Mon Sep 12, 2005 9:50 am 
Newbie

Joined: Wed Sep 07, 2005 5:54 am
Posts: 16
Location: Chambéry
Je viens de faire le test. J'ai pris comme exemple:
A a une relation N-1 vers B

le code devient :
Criteria crit = session.createCriteria(A.class).createAlias("b", "monAsso");

la query exécutée est la suivante :
select * from a this_ inner join b monasso1_ on this_.idA=monasso1_.idA


Par contre, je ne saisie pas trop lorsque tu indiques que "Je n'ai aucun critère qui forcerait la jointure". 'assoc1' représente-t-il bien une relation entre deux classes ? Si oui alors tu as bien un élément de jointure entre les deux. Dans le cas contraire, peux tu préciser ton cas.

Xavier


Top
 Profile  
 
 Post subject:
PostPosted: Mon Sep 12, 2005 10:19 am 
Regular
Regular

Joined: Tue Oct 07, 2003 1:13 pm
Posts: 70
Location: Paris, France
Pour résumé, créer un alias génére un inner join implicite !!!!! Bon à savoir ....

Criteria crit = session.createCriteria(A.class).createAlias("b", "monAsso");
->select * from a this_ inner join b monasso1_ on this_.idA=monasso1_.idA

il n'était pas du tout évident que le fait de rajouter un alias créer cette jointure, elle aurait pu etre créer *uniquement* dans le cas d'un critere appliqué sur cet alias :

Criteria crit = session.createCriteria(A.class).createAlias("b", "monAsso").add (Restrictions.eq("b.name","example")) ;

En tout cas, merci beaucoup pour ton aide
richard


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 6 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.