我想這樣做,但與標準的API,而不是:如何在JPA critera API中執行不同的計數?
select count(distinct e) from Event e, IN(e.userAccessPermissions) p where p.principal = :principal and p.permission in (:permissions)
任何想法?
我想這樣做,但與標準的API,而不是:如何在JPA critera 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))
在您的查詢中使用c.distinct(true)。
有關更多樣品,請參見http://relation.to/Bloggers/ATypesafeCriteriaQueryAPIForJPA。
是否這樣?
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"));
那不是JPA,但問題是 – DataNucleus 2011-06-01 08:12:58
oops,被hibernate標籤誤導,tx – 2011-06-01 08:35:57
我將不勝感激,如果你能爲我提供的是如何做到這一點在我的特殊情況下的例子,因爲香港專業教育學院使用的標準API不同,但由於某種原因,這個用例對我不起作用。 – 2011-06-01 08:32:38