我的subQuery在名为' billingData'的表中返回所有serviceTypeIds及其各自计数的列表。
我想对subQueryResult
执行count(*)操作JPASubQuery subQuery = new JPASubQuery();
subQuery.from(billingData);
subQuery.where(
billingData.serviceTypeId.in(ServiceType.TYPE_ONE.getId(), ServiceType.TYPE_ONE_TWO.getId())
.and(billingData.accountId.isNull())
.and(billingData.price.isNotNull())
.and(billingData.numberId.eq(numbers.id)));//join condition
subQuery.groupBy(billingData.serviceTypeId);
subQuery.having(billingData.count().goe(1));
我的计数尝试
subQuery
.list(billingData.serviceTypeId, billingData.serviceTypeId.count())
.count().eq(2L);
失败并显示错误
java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: expecting CLOSE, found ','
如果您没有指定要计算的内容,则会发生错误。
我想执行一个简单的计数(*),但是没有找到如何从子查询中提取列名作为计数参数的方法。
真的卡在这里:/
答案 0 :(得分:1)
以下计数表达式
subQuery.list(billingData.serviceTypeId).count().eq(2L);
subQuery.count().eq(2L);
subQuery.unique(billingData.serviceTypeId.count()).eq(2L);
JPQL 不支持使用多列计数