Bonjour à tous,
J'ai un peu de mal avec une requête, n'étant pas des plus habitué au Criteria (que j'aimerai pourtant vraiment utilisé ici), et je viens donc chercher un peu d'aide.
Pour essayer de résumer simplement :
j'ai 3 table : A , B, C.
Mano-to-Many entre A et B
One-to-Many entre B et C.
Je veux remonter les éléments de A, qui ont un élément de B donc le MAX(C) est égale a un critère.
En HQL ça donnerai quelque chose comme ça (je simplifie la jointure) :
La ou j'ai du mal avec les criteria, c'est pour faire référence a mon B dans ma sous requête ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select A from A, B, C where A.b = B.a AND (select max(C.x) from C where C.b = B) = :param
J'ai actuellement quelque chose comme ça :
Comment faire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Criteria criteria = getSession().createCriteria(A.class); criteria.createAlias("B", "B"); DetachedCriteria subQuery = DetachedCriteria.forClass(C.class); subQuery.setProjection(Projections.max("x")); //ce qui coince : subQuery.add(Restrictions.eqProperty("b.id", "B.id")); criteria.add(Subqueries.eq(monParam, subQuery)); return crtieria.list();
Merci
Partager