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:
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:
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