Bonjour à tous,

J'ai réussi à avoir les résultats que je souhaite grâce à une requête SQL mais je n'arrive pas à la traduire en HQL.

Les deux tables concernées sont :
- T_COMPANY : table des company, les champs sont ID, name
- T_CONSULTATION : table des historiques, les champs sont companyID, userID

Ma requete me retourne pour un user donné, toutes les company en affichant le ID, le name et un nouveau champ true si le user a consulte la company correspondante et false sinon.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
select company.ID, company.name, case when (consult.userID is null) then 'true' else 'false' end as consult
from T_COMPANY company, T_CONSULTATION consult
where consult.companyID (+)= company.ID
and consult.userID (+)= 20
Par exemple :

T_COMPANY :
ID | Name
------------
1 | Avymo
2 | Orlupo
3 | Niij

T_CONSULTATION :
companyID | userID
--------------------
1 | 20
2 | 30

Résultats souhaités :

ID | Name | consult
--------------------
1 | Avymo | true
2 | Orlupo | false
3 | Niij | false

Probleme :
Je ne sais pas traduire le (+) en HQL

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
select company.ID, company.name, case consult.companyID when company.ID then false else true end)
from Company company, Consult consult
where consult.userID = :userID
NB : le userID étant le ID du user connecté

Avez-vous des idées ?
Merci pour votre aide.