Je suis en train d'utiliser l'API de critères dans le scénario suivant:Utilisation de l'API Critères Hibernate pour interroger plusieurs-à-un avec les projections
- J'ai deux tables,
Schedule
etRoute
(avec leurs classes et applications). Route
a une relation plusieurs-à-un avecSchedule
.Route
a une propriété entièresequence
.
Maintenant je dois aller chercher tous les objets Schedule dont les objets d'itinéraire associés remplir la condition suivante:
route.sequence=no. of all Route objects associated with the given Schedule object
J'ai essayé le code de critères suivants pour elle:
Criteria crit = getSession().createCriteria(getPersistentClass())
.createCriteria("routes", "route")
.setProjection(Projections.projectionList()
.add(Projections.rowCount(), "routeCount"))
.add(Restrictions.not(Restrictions.ltProperty("route.sequence", "routeCount")));
Mais génère le SQL suivant:
select count(*) as y0_
from schedule this_
inner join route route1_ on this_.ID=route1_.scheduleId
where route1_.sequence<y0_
et jette l'erreur suivante:
Unknown column 'y0_' in 'where clause'
S'il vous plaît aidez-moi si vous avez des suggestions.
Je ne comprends pas votre condition de pseudocode. Voulez-vous réellement dire que toutes les routes doivent avoir le même numéro de séquence? – meriton
Un objet Schedule peut avoir n objets Route. (où n est 2 ou 3 habituellement). La valeur de Route.sequence peut aller de 0 à n-1. En fait, il s'agit d'un schéma pour un système d'information de vol simple. Le tableau des horaires contient des informations telles que le numéro de vol, la date et l'heure du vol et l'état du vol. Les villes qui composent la route du vol sont placées dans la table Route (car il peut y avoir un nombre variable de villes de route pour chaque vol). Le numéro de route.sequence identifie la séquence dans laquelle une ville se trouve pour un vol. – craftsman
La requête que j'ai essayé de faire avec l'API Criteria est de rechercher tous les vols qui arrivent à une ville donnée X. – craftsman