2009-10-29 6 views
1

Après un long googling, je ne trouve toujours pas de réponse définitive à cette question. Certains vieux articles/billets de blog que j'ai vu ne disent pas du tout. Certains disent oui si la base de données underling le supporte. Lequel est-ce? J'ai demandé sur le groupe nhusers sans réponse jusqu'à présent. Toute aide serait appréciée.NHibernate HQL prend-il en charge le mot-clé UNION ALL?

Répondre

0

Je l'ai lu quelque part que ce ne est pas même si je ne peux pas comprendre pourquoi. La meilleure façon de voir est de l'essayer soi-même ...

+0

Le lien o.k.w le supprime. il ne soutient pas du tout l'union. – Dani

+0

@Dani: Ici !!! http://stackoverflow.com/questions/247103/how-do-you-do-a-union-of-two-tables-in-nhibernate –

2

NHibernate ne supporte pas l'union. Il y a toujours un type dans un résultat.

Ce que vous pouvez faire est une requête à une classe de base ou une interface. NHibernate effectuera une union pour obtenir toutes les valeurs de toutes les tables où les entités sont mappées.

Il existe également la stratégie de mappage union-subclass, qui implique également l'existence d'une classe de base ou d'une interface.

+0

Hey Stefan, en utilisant la classe interface/base vous voulez dire en utilisant des requêtes polymorphes, à droite ? J'ai suivi la stratégie polymorphique (une interface, deux classes concrètes) et la requête fonctionne bien mais IQueryable.Count() ne retourne pas la valeur désirée. Il ne renvoie que le nombre du premier type. Je me demandais si vous aviez jamais eu un tel problème? [Je pense que le problème du nombre pourrait être lié à NH-2500] – kaptan

+0

Je ne pense pas qu'il est lié à NH-2500 (https://nhibernate.jira.com/browse/NH-2500), qui est lié à paramètres de requête. Le plus souvent, "select count" n'est pas implémenté de cette façon. Je n'ai trouvé aucune ressource pour cela. Vous pouvez le trouver dans le code. –