What does EntityManager.getSingleResult() return for a COUNT query?
EntityManager.getSingleResult()
So.. what is the precise runtime type of foo?
Object foo = em.createQuer
You can return directly integer, rather than a long.
return query.getSingleResult() != null ? Integer.parseInt(query.getSingleResult().toString()) : 0;