Hibernate Jointure Externe Gauche problème: chemin d'accès prévu sur rejoindre
J'ai deux tables, quelque chose comme:
Article et ArticleRelevance
Ils ont une relation, et ArticleRelevance est facultative, ce qui signifie un Article peut (ou peut ne pas) avoir un ArticleRelevance.
Je veux sélectionner tous les articles avec le ArticleRelevance de détails.
Traditionnelle SQL, je vais faire une jointure sur les tables, comme
SELECT *
FROM ARTICLE A LEFT OUTER JOIN ARTICLE_RELEVANCE AR ON A.ARTICLE_ID = AR.ARTICLE_ID
J'ai essayé une requête similaire dans les requêtes HQL et a obtenu une Exception avec le message "Path Expected for Join"
Je suis incapable de comprendre ce message. Qu'est-ce que cela signifie, et comment puis-je le résoudre?
(Que vous avez probablement déjà deviné) je suis un absolu hibernate débutant.
Je ont à utiliser les requêtes HQL. En fait j'ai un HQL déjà, la liaison de deux ou trois tables, et je dois ajouter cette condition.
StringBuffer hql = new StringBuffer();
hql.append(" select new service.orders.Order (order.orderNo, article.articleNo, article.articleName)");
hql.append(" from (Order order join Article article with order.articleNo = article.articleNo) left outer join ArticleRelevance articleRelevance with article.articleNo = articleRelevance.articleNo");
hql.append(" and order.orderNo = "+orderNumber);
Dans cette forum, quelqu'un dit que c'est "fonctionnalités manquantes". Vrai?
OriginalL'auteur Nivas | 2010-10-12
Vous devez vous connecter pour publier un commentaire.
Avec HQL, un
[ LEFT [OUTER] | INNER ] JOIN
se fait le long d'une association chemin d'accès (construit avec une identification de la variable suivi d'un point et d'une association de terrain). Donc quelque chose comme ceci dans votre cas:Le mot-clé EXTERNE est facultatif.
Et votre plus grand requête devient:
Noter l'utilisation d'un paramètre nommé
:orderNo
(ne pas concaténer des paramètres). L'utiliser comme ceci:Références
OriginalL'auteur Pascal Thivent