您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用CriteriaBuilder的JPA + Hibernate count(*)-与generateAlias

使用CriteriaBuilder的JPA + Hibernate count(*)-与generateAlias

您的代码失败,因为您Root为count和where子句使用了不同的实例:第一个(按定义顺序)生成generatedAlias1别名,另一个生成generatedAlias0。您需要重构代码,以便Root在两个地方使用相同的实例:

CriteriaQuery<Long> cqCount = builder.createQuery(Long.class);
Root<ReqStatCumulative> entityRoot = cqCount.from(cqEntity.getResultType());
cqCount.select(builder.count(entityRoot));
Path<Long> processTimeSeconds = entityRoot.get("processTimeSeconds");
cqCount.where(qb.and(qb.greaterThan(processTimeSeconds, (long) cfg.getProcessTimeExceedsSec()),//
                qb.lessThan(processTimeSeconds, (long) cfg.getProcessTimeExceedsSec() + 100))//
                );//    
return em.createQuery(cqCount).getSingleResult();
其他 2022/1/1 18:21:15 有556人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶