【发布时间】:2012-08-10 06:59:35
【问题描述】:
如何在不获取所有列表的情况下使用命名查询获取计数(我认为这会提高性能)。这是不起作用的命名查询:
@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
【问题讨论】:
-
@JBNizet 查询相同,执行不同。
-
非常抱歉,问题还是一样,只是第二个查询拼错了。
-
@JBNizet 第二次执行指定结果类型为
Charakteristika.class;我猜这是把事情扔掉,为N行中的每一行返回一个计数。 -
@Minutis 通常看起来很合理,所以我认为更多信息可能会有所帮助 - 你的运行时环境是什么? JPA 引擎、版本等?
-
@Minutis: 哪个问题?告诉我们会发生什么。
标签: java jpa named-query