Hibernate Critères Laissés À Joindre Deux Tables
J'ai deux entités, dire des Affaires et de la Région.
Propriétés pertinentes:
D'affaires de la zone, euro2, code
Zone - areaId, areaName
zone et euro2 des Affaires de la carte à l'id dans la Zone
Je suis en train d'écrire un Hibernate critères qui renvoie tous les domaines avec les entreprises.
SQL ressemble à:
À PARTIR de la zone de JOINTURE EXTERNE GAUCHE d'affaires b sur une.areaId = b.zone ou d'un.areaId = b.euro2
OÙ b.code != null
GROUPE PAR une.areaName
C'est ce que j'ai:
DetachedCriteria criteria = DetachedCriteria.forClass(Business.class)
.setProjection(Property.forName("area"))
.setProjection(Property.forName("area2"))
.add(Restrictions.ne("code", null));
Criteria criteriaArea = fullTextSession.createCriteria(Area.class)
.createAlias("areaId", "areaId", CriteriaSpecification.LEFT_JOIN)
.add(Property.forName("areaId").in(criteria));
Mais cela ne fonctionne pas, j'obtiens un "pas une association: areaId" requête exception.
Des idées pourquoi ce qui se passe? Merci.
Petite astuce: des Restrictions d'utilisation.isNotNull (le"code"). Dans certaines bases de données "<> null" diffère de "n'est pas nulle".
Avez-vous mis en relation définition de l'entité?(xml ou annotations)
Avez-vous mis en relation définition de l'entité?(xml ou annotations)
OriginalL'auteur J. Lin | 2011-02-10
Vous devez vous connecter pour publier un commentaire.
createAlias()
se joint à une autre entité à l'aide fournie à la propriété. Hibernate calcule ce que la table de jointure à l'aide de la cartographie de la condition de la propriété. MaisareaId
n'est pas mappé comme@ManyToOne
ou@ManyToMany
référence à une entité commerciale. Donc, Hibernate ne pas comprendre à ce que la table que vous voulez vous joindre à l'aide de la Zone.areaId.À vos critères sera traduit en SQL comme:
Vous pouvez réécrire la requête, sans inutilisés rejoindre:
OriginalL'auteur Vladimir Korolev