3
SELECT c.*, asCount.assetCount
FROM Company c
LEFT JOIN (
SELECT company_id, COUNT(*) as assetCount
FROM Asset
GROUP BY company_id) asCount
ON c.id = asCount.company_id
问:我怎么能与JPA 2标准执行呢?
我能够分别获得asCount结果,但不知道如何将它加入到公司
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<Tuple> cq = builder.createTupleQuery();
Root<Asset> asset = cq.from(Asset.class);
cq.multiselect(asset.<Company>get("company").<Long>get("id").alias("id"), builder.count(asset).alias("assetCount"));
cq.groupBy(asset.<Company>get("company").<Long>get("id"));
Query query = em.createQuery(cq);
List<Tuple> results = query.getResultList();
在此先感谢。
PS
1.有一个类似的线程要求使用Hibernate API儿童数: Hibernate children count criteria
2.描述话题另一个有用的线索:JPA CriteriaBuilder - sort by the number of associated entities in a one-to-many relationship