-->
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 conversion d'une requête HQL en SQL
PostPosted: Fri Sep 26, 2008 4:10 am 
Newbie

Joined: Fri Sep 26, 2008 4:04 am
Posts: 2
Bonjour,


On rencontre des problèmes lors de l’exécution d'une (des) requête HQL quand on regarde la requête en SQL
en sortie elle ne correspond en rien, surtout dans la gestion des parenthèses dans le cas de AND et de OR imbriqué.
Problème insidieux puisque rien ne laisse apparaitre le pb.

Une idée de solution …..

Merci d’avance.

Hibernate-Version: 3.1.3

en hql:

AND ( (poposteagent.poa_dat_deb is null )
OR (poposteagent.poa_dat_deb is not null
AND poposteagent.poa_dat_deb > :date_jour
AND poposteagent.poa_dat_fin > :date_jour)
OR ( (poposteagent.poa_dat_fin is not null
AND poposteagent.poa_dat_fin < :date_jour)) )




en sql :
......
and ( list_agent12_.POA_DAT_DEB is null
or (list_agent12_.POA_DAT_DEB is not null )
and list_agent12_.POA_DAT_DEB>?
and list_agent12_.POA_DAT_FIN>?
or (list_agent12_.POA_DAT_FIN is not null)
and list_agent12_.POA_DAT_FIN<? )


Top
 Profile  
 
 Post subject:
PostPosted: Thu Oct 02, 2008 4:46 am 
Newbie

Joined: Mon Jun 16, 2008 8:53 am
Posts: 6
Bonjour, es-tu sur que t'as bien ce qui suit?



AND ( poposteagent.poa_dat_deb is null
OR (poposteagent.poa_dat_deb is not null AND poposteagent.poa_dat_deb > :date_jour AND poposteagent.poa_dat_fin > :date_jour)
OR ( poposteagent.poa_dat_fin is not null AND poposteagent.poa_dat_fin < :date_jour)
)
===> AND(A OR ( !A AND B AND C) OR ( !D AND !C) )



and ( list_agent12_.POA_DAT_DEB is null
or (list_agent12_.POA_DAT_DEB is not null )
and list_agent12_.POA_DAT_DEB>?
and list_agent12_.POA_DAT_FIN>?
or (list_agent12_.POA_DAT_FIN is not null)
and list_agent12_.POA_DAT_FIN<? )

===> AND (A OR (!A) AND B AND C OR (!D AND !C) )

_________________
Solidaire dans la Galère... (à mediter)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Oct 02, 2008 5:35 am 
Newbie

Joined: Fri Sep 26, 2008 4:04 am
Posts: 2
Bonjour,

je suis preque ok pour le HQL

===> AND(A OR ( !A AND B AND C) OR ( !D AND E) )


par contre sur le sql

and ( list_agent12_.POA_DAT_DEB is null
or (list_agent12_.POA_DAT_DEB is not null )
and list_agent12_.POA_DAT_DEB>?
and list_agent12_.POA_DAT_FIN>?
or (list_agent12_.POA_DAT_FIN is not null)
and list_agent12_.POA_DAT_FIN<? )

===> AND (A OR (!A) AND B AND C OR (!D AND !C) )
===> AND (A OR (!A) AND B AND C OR (!D) AND E )

le requête ainsi générée perd sa cohérence.

As tu une idée (d'une solution )...


Top
 Profile  
 
 Post subject:
PostPosted: Thu Oct 02, 2008 11:22 am 
Newbie

Joined: Mon Jun 16, 2008 8:53 am
Posts: 6
On est d'accord.
Pour le E c'est vrai que c'est pas tout à fait la négation.
On garde alors au final:

HQL
===> AND(A OR ( !A AND B AND C) OR ( !D AND E) )

SQL
===> AND (A OR !A AND B AND C OR !D AND E )

J'ai essayé de faire un début de table de vérité en remplaçant:
A = false et le reste à true
A = false et tout le reste à false
A = true, B = false et tout le reste à true
Le résultat pour le HQL et SQL est le même.
Il faut savoir que le ET (AND) est prioritaire par rapport au OU(OR).
je te donne le lien du wiki: http://fr.wikipedia.org/wiki/Op%C3%A9rateur_bool%C3%A9en


A priori je te dirais que c'est pareil mais pour en être sur il te faudrait faire une table de vérité (bon courage)

Pour finir, est ce que t'as le résultat escompté (je suppose que non si tu poses la question)

Voila si ça t'as aidé.
N'hesite pas.

@ bientot

_________________
Solidaire dans la Galère... (à mediter)


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.