je la requête SQL requête suivante:critères de mise en veille prolongée requête
select * from Articles ar
left join ArticleTeamRelationships atr on atr.ArticleId = ar.ArticleId
left join Team te on te.TeamId = atr.TeamId
inner join ArticleCategoryRelationships acr on acr.ArticleId = ar.ArticleId
inner join ArticleCategory ac on ac.CategoryId = acr.CategoryId
where ac.CategoryId = 3
and ((te.TeamId in (1) and ar.TeamReadOnly = 1) or te.TeamId is null)
C'est ce que j'ai écrit jusqu'à présent:
Criteria childCriteriaCategory = criteria.createCriteria("articleCategory", Criteria.INNER_JOIN);
childCriteriaCategory.add(Restrictions.like("categoryId", categoryId));
Criteria childCriteriaTeam = criteria.createCriteria("team", Criteria.LEFT_JOIN);
childCriteriaTeam.add(Restrictions.in("teamId", teamId));
Criterion teamReadOnly = Restrictions.eq("teamReadOnly", true);
criteria.add(teamReadOnly);
Comment puis-je écrire le « et » à l'intérieur des premiers supports et le "ou"?
Avez-vous vérifié cela? http://www.roseindia.net/hibernate/examples/criteria/hibernate-criteria-and-or.html – Holm
Oui, je l'ai vu. Mon problème est que j'ai besoin de mettre le "et" entre deux tables, et je ne sais pas comment faire cela. – jorgen
utilisez les noms d'alias pour faire référence à la table. Vous n'avez pas besoin de toutes ces variables. Il est beaucoup plus lisible lorsqu'il est écrit dans un style fluide. –