Naiv würde ich folgende Kombination versuchen, aber ich denke nicht dass das funktioniert:
Code:
List users = session.createCriteria(User.class)
.createCriteria("roles", CriteriaImpl.INNER_JOIN)
.add( Restrictions.eq("role", roleone) )
.add( Restrictions.eq("role", roletwo) )
.createCriteria("groups", CriteriaImpl.INNER_JOIN)
.add( Restrictions.eq("group", groupone) )
.add( Restrictions.eq("group", grouptwo) )
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.list();
roles und groups sind Attributnamen im User-Objekt, die auf Listen zeigen (Many-To-Many).
Die erste Zeile soll alle User auswählen, die zweite soll die Rollen einschränken (roleone UND roletwo zur gleichen Zeit), die nächste Zeile soll die Gruppen einschränken.
1) Ist INNER_JOIN überhaupt richtig für meine Anforderungen?
2) Ist es richtig, zwei Restrictions nacheinander hinzuzufügen, um festzulegen, dass beide gleichzeitig gelten sollen?
3) Ist der ResultTransformer richtig angewendet?