如何使用命名查询获取计数,而不必获取整个列表(这样可以提高性能)。以下是不起作用的命名查询:
@NamedQuery(name = "Charakteristika.findAllCount", query = "SELECT COUNT(c) FROM Charakteristika c")
执行以下代码:
System.out.println("a");
System.out.println(em.createNamedQuery("Charakteristika.findAllCount", Integer.class).getSingleResult().intValue());
System.out.println("b");
输出:
a
虽然这个查询可以工作:
@NamedQuery(name = "Charakteristika.findAll", query = "SELECT c FROM Charakteristika c")
执行以下代码:
System.out.println("a");
System.out.println(em.createNamedQuery("Charakteristika.findAll", Charakteristika.class).getResultList().size());
System.out.println("b");
输出:
a
11111
b
Charakteristika.class
,我猜这会引起问题,返回每个N
行的计数。 - Richard Sitze