Java JPA Eclipselink NamedQuery与查询计数
无法从NamedQuery中获取整数Java JPA Eclipselink NamedQuery与查询计数,java,jpa,eclipselink,Java,Jpa,Eclipselink,无法从NamedQuery中获取整数 @NamedQuery( name = Comm.COUNTLIKEVALUEINHOLDER, query = "SELECT COUNT(c.id) " + "FROM Comm c " + "JOIN c.element e " + "WHERE c.search1 LIKE :search1 " + "AND c.search2 =
@NamedQuery( name = Comm.COUNTLIKEVALUEINHOLDER,
query = "SELECT COUNT(c.id) " +
"FROM Comm c " +
"JOIN c.element e " +
"WHERE c.search1 LIKE :search1 " +
"AND c.search2 = :search2 " +
"AND c.type = :type " +
"AND e.holderelement = :holder"
)
Object q = em.createNamedQuery(Comm.COUNTLIKEVALUEINHOLDER)
.setParameter("search1", "bla%")
.setParameter("search2", "bla2")
.setParameter("type", t)
.setParameter("holder", h)
.getSingleResult();
我从计数聚合中得到一个实体,而不是一个长或整数
但这里我得到了一个整数。这是完全相同的查询
Object i = em.createQuery("SELECT COUNT(c.id) " +
"FROM Comm c " +
"JOIN c.element e " +
"WHERE c.search1 LIKE :search1 " +
"AND c.search2 = :search2 " +
"AND c.type = :type " +
"AND e.holderelement = :holder")
.setParameter("search1", "bla%")
.setParameter("search2", "bla2")
.setParameter("type", t)
.setParameter("holder", h)
.getSingleResult();
有人有想法吗?简短回答:
createQuery用于创建动态查询。返回类型由QL语言的返回类型决定(在上面的示例中为“selectcount(c.id)”)
em.createNamedQuery用于创建静态查询。返回类型可以是类型转换,例如:
Object q = em.createNamedQuery(Comm.COUNTLIKEVALUEINHOLDER)
.setParameter("search1", "bla%")
.setParameter("search2", "bla2")
.setParameter("type", t)
.setParameter("holder", h)
.getSingleResult();
Integer count = (Integer) q;
`
另见: