如何在JPA critera API中做一个独特的计数?
我想这样做,但使用标准API代替:
select count(distinct e) from Event e, IN(e.userAccessPermissions) p where p.principal = :principal and p.permission in (:permissions)
有任何想法吗?
您可以在CriteriaBuilder上使用countDistinct
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 。