【发布时间】:2017-03-06 12:07:36
【问题描述】:
您能否分享一下通过 JPA 编写的代码 sn-p 以生成以下 sql 查询
SELECT COUNT(*) FROM Customer c
WHERE c.countryId ='Canada' AND
c.lanuguage ='ENG' AND
ROW_NUM <=10;
因为我尝试了以下方式。但是 MaxResults 似乎没有得到应用,因为我可以收到超过 10 个的计数。
Query query = em.createQuery("SELECT COUNT(c) FROM Customer c where c.countryId ='Canada' and c.lanuguage ='ENG'");
query.setMaxResults(10);
long customerCount = (Long)query.getSingleResult();
【问题讨论】:
-
我不确定
ROW_NUM在这里应该代表什么。你有一个叫做行号的列吗?即使您的数据库支持这一点,它也不是 JPA 的一部分,并且无论如何都需要排序才能有意义。 -
你可能只需要设置 limit = 10 吗?
-
最大结果的设置仅影响您作为最终结果获得的行数。选择计数将始终只返回 1 行(包含已完成的计数)。因此,应用了最大结果,但没有影响,也不是您可以在这种情况下使用的结果。但是,像您目前所做的那样获取总计数并返回 10,如果它更高,这不是最简单的解决方案吗?
-
您在 2 天前问了同样的问题。 stackoverflow.com/questions/42587842/…这没有帮助?