2017-10-04 3 views
0

Je suis assez nouveau pour nHibernate et HQL, mais en utilisant la documentation, je suis sûr qu'il est possible de sous-interroger dans une instruction select.Sous-requête HQL dans l'instruction select

Tentative d'exécuter cette requête.

SELECT DISTINCT a.ID, (SELECT COUNT(accHld.ID) FROM AccountHolder accHld 
    WHERE a.ID = accHld.Account) FROM Account a GROUP BY a.ID 

je reçois est «fonction HQL attendue avant « (» dans la clause SELECT »

J'ai essayé d'ajouter la sous-requête dans le groupe en fonction . bien, en vain, je me demandais si quelqu'un savait ce que je faisais mal

Répondre

0

Tu ne pas besoin d'un sous-requête mais jointure externe gauche:

SELECT DISTINCT a.ID, COUNT(accHld.ID) 
FROM Account a 
LEFT OUTER JOIN AccountHolder accHld ON a.ID = accHld.Account 
GROUP BY a.ID 
+0

Merci pour votre commentaire, le seul problème est que, en plus du compte, je dois également rejoindre une autre classe appelée "paiements" ainsi que les titulaires de compte. Le problème que j'ai avec cela, c'est qu'ils sont tous deux mappés à la classe Accounts, donc je reçois des informations en double, même en utilisant distinct. Serait-il de toute façon autour de cela? –

+0

Je ne comprends pas, vous voulez rejoindre Account, Payments et AccountHolders pour obtenir les attributs de quelle table? – Aldeguer

+0

Désolé, d'accord, j'ai 3 unités. Paiements, titulaires de compte et comptes. Les paiements et les titulaires de compte ont tous deux une correspondance avec Account. À l'aide de HQL, gauche se joignant à la fois à l'aide de Account.ID et des clés étrangères dans Payments et AccountHolders et SELECTING data, renvoie des dublicates. –