Я бы хотел это сделать, но вместо этого использовать API критериев:
select count(distinct e) from Event e, IN(e.userAccessPermissions) p where p.principal = :principal and p.permission in (:permissions)
Есть идеи?
Вы можете использовать countDistinct для CriteriaBuilder
criteriaQuery.select(criteriaBuilder.countDistinct(entityRoot))
Как это?
Criteria crit = session.createCriteria(Event.class): crit.createAlias("userAccessPermissions", "p"); crit.add(Restrictions.eq("p.principal", principal); crit.add(Restrictions.in("p.permission", permissions); crit.setProjection(Projections.countDistinct("id"));
Используйте c.distinct (true) для вашего запроса.
См. http://relation.to/Bloggers/ATypesafeCriteriaQueryAPIForJPA для большего количества образцов.