What does JPA EntityManager.getSingleResult() return for a COUNT query?

Viewed 55606

What does EntityManager.getSingleResult() return for a COUNT query?

So.. what is the precise runtime type of foo?

Object foo = em.createQuery("SELECT COUNT(t) FROM com.company.Thing t WHERE prop = :param")
       .setParameter("param", value).getSingleResult();
9 Answers

You can return directly integer, rather than a long.

return query.getSingleResult() != null ? Integer.parseInt(query.getSingleResult().toString()) : 0;
return query.getSingleResult() != null ? Integer.parseInt(query.getSingleResult().toString()) : 0;

Second call query.getSingleResult() will throw org.hibernate.SessionException: Session is closed!

To avoid the org.hibernate.SessionException: Session is closed! use as below

Object obj = query.getSingleResult();
    if (obj != null) {
        Integer result = Integer.parseInt(obj.toString());
        return result;
    }

    return Integer.valueOf(0);

Count returns long.

Query query = em.createQuery("SELECT COUNT(*) FROM Mandate " );

return (Long) query.getSingleResult();

Mapped your entity with the Query.

Related