-->
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.  [ 4 posts ] 
Author Message
 Post subject: API Criteria => clause OR sur plusieurs tables
PostPosted: Mon Aug 08, 2005 6:12 am 
Newbie

Joined: Mon Aug 08, 2005 5:26 am
Posts: 6
Bonjour,

Nouvel utilisateur de hibernate, je souhaite utiliser l'API criteria pour récupérer les données de la base. J'ai un souci lors d'une recherche d'objet. Voici le descriptif des tables / objets :

- Objet MonObjet :
id (long)
reference1 (Reference)
reference2 (Reference)
+ d'autres attributs descriptif

reference1 et reference2 sont des objets Reference et sont obligatoires.

- Objet Reference :
id (long)
valeur (string)

Les tables sont identiques à la descriptions des objets (base Oracle).
MONOBJET
id number
ref1_id number
ref2_id number
...

REFERENCE
id number
valeur varchar2


Recherche souhaitée :
Retouver tous les objets "MonObjet" dont la valeur de reference1 est 'A' OU dont la valeur de reference2 est 'A'.

J'ai essayé de créer un criteria pour chaque reference mais malheureusement les criterion (permettant la clause OR) ne peuvent pas intervenir sur plusieurs criteria.

en SQL (oracle) cela donnerait une requête de ce style :

Code:
select t.*
from monobjet t, reference ref1, reference ref2
where t.ref1_id  = ref1.id
and t.ref2_id  = ref2.id
and (ref1.valeur  = 'A' or ref2.valeur  = 'A')


Est ce possible à partir de l'API criteria?

Merci.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Aug 09, 2005 4:17 am 
Expert
Expert

Joined: Thu Sep 04, 2003 8:23 am
Posts: 368
Oui

C'est quelquechose du genre
Code:
session.createCriteria(MonObjet.class)
  .createAlias("ref1", "ref1")
  .createAlias("ref2", "ref2")
  .add(Restrictions.or(
    Restrictions.eq("ref1.valeur", "A"),
    Restrictions.eq("ref2.valeur", "B")));


Ce qui est bizarre dans ton exemple c'est que MonObjet possède juste l'id de ref1 et ref2 et pas une réelle association. Si tu fais comme cela ça ne marchera pas. Si tu veux utiliser un Criteria du type celui que je mets en exemple, il faut que tu ais de vrais associations entre monobjet et ref1 et ref2

Seb


Top
 Profile  
 
 Post subject:
PostPosted: Tue Aug 09, 2005 5:34 am 
Newbie

Joined: Mon Aug 08, 2005 5:26 am
Posts: 6
Merci pour ta réponse.
En fait, j'ai acheté le livre sur Hibernate mais l'API est très peu décrite. Dommage.
Mais la doc sur le site est très complète ;-)

Pour mon exemple, j'ai bien une association. MonObjet possède deux objets Reference et non pas que les id comme les tables. Je me suis mal exprimé. Désolé.

Maintenant ça fonctionne.

Merci beaucoup.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Aug 11, 2005 5:37 am 
Hibernate Team
Hibernate Team

Joined: Sun Sep 14, 2003 3:54 am
Posts: 7256
Location: Paris, France
clh wrote:
En fait, j'ai acheté le livre sur Hibernate mais l'API est très peu décrite. Dommage.
Mais la doc sur le site est très complète ;-)

On n'est pas très fan des livres qui font un copier/coller de la doc de référence

_________________
Emmanuel


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 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.