-->
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: Problème de parenthèse dans une requête HQL
PostPosted: Thu May 15, 2008 5:59 am 
Newbie

Joined: Thu May 15, 2008 5:43 am
Posts: 7
Bonjour,

Voici mon petit souci.
Je tente de faire une requête avec des AND et des OR imbriqués.
Voici le HQL que j'exécute dans ma session :
Query query = session.createQuery(""from Planning where Utilisateur.Id = " + oUtilisateur.getId() + " AND ( (DateDebut >= '01/05/2008' AND DateDebut <= '31/05/2008') OR (DateFin >= '01/05/2008' AND DateFin <= '31/05/2008') ) ORDER BY DateDebut"") ;

Le problème c'est qu'il me génére une requête (cf plus bas) qui ne correspond pas à ce que j'ai noté. Avez-vous des idées ?
D'avance merci de votre aide. Peut-être que je fais mon boulet mais je vois pas mon erreur.

Hibernate version:3.2.6
Mapping documents:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="fr.mycompany.myproject.object">
<class name="Planning" table="planning">
<id name="Id" column="id">
<generator class="sequence">
<param name="sequence">seq_planning</param>
</generator>
</id>
<property name="DateDebut" column="date_deb" />
<property name="DateFin" column="date_fin" />
<property name="Code" column="code" />
<many-to-one name="Utilisateur"
class="fr.mycompany.myproject.object.Utilisateur" cascade="none">
<column name="id_utilisateur" />
</many-to-one>
</class>
</hibernate-mapping>


Name and version of the database you are using:Oracle 9

The generated SQL (show_sql=true):
Hibernate: select planning0_.id as id28_, planning0_.date_deb as date2_28_, planning0_.date_fin as date3_28_, planning0_.code as code28_, planning0_.id_utilisateur as utilisateur7_28_ from planning planning0_ where planning0_.id_utilisateur=1055 and (planning0_.date_deb>='01/05/2008' and planning0_.date_deb<='31/05/2008' or planning0_.date_fin>='01/05/2008' and planning0_.date_fin<='31/05/2008')
order by planning0_.date_deb


Top
 Profile  
 
 Post subject:
PostPosted: Thu May 15, 2008 8:59 am 
Newbie

Joined: Thu May 15, 2008 5:43 am
Posts: 7
En parcourant les sources d'Hibernate il semble que le souci soit du côté du SqlGeneratorBase. Mais je n'arrive pas encore à comprendre toute la logique de cette classe. Avez-vous des idées ?


Top
 Profile  
 
 Post subject:
PostPosted: Mon May 19, 2008 5:20 am 
Newbie

Joined: Thu May 15, 2008 5:43 am
Posts: 7
Bonjour,

Je ne peux pas croire que personne n'est rencontré le même type de problème, c'est incroyable. Personne n'a d'idées ou personnes ne comprend mon problème ?

D'avance merci de vos réponses.

@+


Top
 Profile  
 
 Post subject:
PostPosted: Sun Jun 22, 2008 4:51 pm 
Proxool Developer
Proxool Developer

Joined: Tue Aug 26, 2003 10:42 am
Posts: 373
Location: Belgium
1/
La requête générée par Hibernate est tout à fait correcte... Tu devrais revoir l'ordre de précédence des opérateurs SQL:

The order of precedence for the logical operators is NOT (highest), followed by AND, followed by OR. The order of evaluation at the same precedence level is from left to right. Parentheses can be used to override this order in a search condition.

On peut donc supprimer une série de parenthèses, sauf la première qui suit le test sur "utilisateur.id".


2/
Je te conseille d'utiliser des paramètres dans ta query au lieu de "hard coder" tes dates... tu vas avoir des problèmes avec certaines DB.


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.