L'équivalent HQL de SQL contient
Je suis en train d'écrire une requête HQL pour sélectionner les objets qui contiennent un objet à un enfant de la collection.
Exemple:
Concours Objet
ContestID
ContestName
RequiredCountries -> one to many collection of Country objects
Pays De L'Objet
CountryCode
CountryName
Sql équivalent de ce que je veux:
SELECT * FROM CONTEST C
WHERE C.CONTESTID IN(SELECT CONTESTID FROM CONTEST_COUNTRY CC INNER JOIN COUNTRY CTRY ON
CC.COUNTRYCODE = CTRY.COUNTRYCODE WHERE COUNTRYCODE='USA')
OU
SELECT * FROM CONTEST C
WHERE EXISTS(SELECT CONTESTID FROM CONTEST_COUNTRY CC INNER JOIN COUNTRY CTRY ON
CC.COUNTRYCODE = CTRY.COUNTRYCODE WHERE COUNTRYCODE='USA' AND CC.CONTESTID=C.CONTESTID)
J'ai cette hql, qui fonctionne, mais semble pas une bonne solution-
from Contest C
where (from Country where CountryCode = :CountryCode) = some elements(C.RequiredCountries)
J'ai aussi envisager de se joindre avec des Pays, mais depuis je n'ai pas une classe d'objet pour représenter la relation, je n'étais pas sûr de la façon de joindre les requêtes HQL.
N'importe qui ont des idées ou des suggestions? Ce devrait être facile.
source d'informationauteur Brian
Vous devez vous connecter pour publier un commentaire.
essayez ceci:
Article connexe
La précédente on va travailler (au moins il travaille pour moi --- je suis de l'utilisation d'hibernate), mais la "bonne voie" est le "membre" de l'opérateur... comme ceci:
(voir http://docs.oracle.com/javaee/6/tutorial/doc/bnbuf.html#bnbvk)
Les éléments() est HQL extension, je pense. Je pense qu'il est préférable d'utiliser la norme (JPQL) chaque fois que possible.