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();
COUNT(t) specifically returns java.lang.Long. When its appears on its own in this context it is returned as-is.
(In other contexts the Long generated by COUNT may be wrapped, but not today.)