Min*_*tis 28 java jpa named-query
如何使用namedquery计数,而不是获取所有列表(它会提高我认为的性能).这是不起作用的命名查询:
@NamedQuery(name = "Charakteristika.findAllCount", query = "SELECT COUNT(c) FROM Charakteristika c")
Run Code Online (Sandbox Code Playgroud)
执行此:
System.out.println("a");
System.out.println(em.createNamedQuery("Charakteristika.findAllCount", Integer.class).getSingleResult().intValue());
System.out.println("b");
Run Code Online (Sandbox Code Playgroud)
输出:
a
Run Code Online (Sandbox Code Playgroud)
虽然此查询有效:
@NamedQuery(name = "Charakteristika.findAll", query = "SELECT c FROM Charakteristika c")
Run Code Online (Sandbox Code Playgroud)
执行此:
System.out.println("a");
System.out.println(em.createNamedQuery("Charakteristika.findAll", Charakteristika.class).getResultList().size());
System.out.println("b");
Run Code Online (Sandbox Code Playgroud)
输出:
a
11111
b
Run Code Online (Sandbox Code Playgroud)
Sai*_*Aye 36
改变你喜欢的代码;
int count = ((Number)em.createNamedQuery("Charakteristika.findAllCount").getSingleResult()).intValue();
System.out.println(count);
Run Code Online (Sandbox Code Playgroud)
您也可以尝试一下:使用带有 Long 值的 TypeQuery 接口。在下一个示例中,“PosicionHistorialDia.findNumberSpeeding”查询是一个 jpa 计数。
@Override
public Long findCount(String eventCode) {
TypedQuery<Long> query = em.createNamedQuery(
"PosicionHistorialDia.findNumberSpeeding",
Long.class);
query.setParameter("event", eventCode);
return query.getSingleResult();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55802 次 |
| 最近记录: |