Skip to content
Advertisement

Returning result of count native query using EntityManager in Java?

I have the following SQL Query :

SELECT COUNT(*) FROM DOG where ID = 'SampleId';

I am trying to write this in java :

public int returnCountOfDogTable(String id){

        String sql= "SELECT COUNT(*) FROM DOG WHERE ID =:id";
        Query query = persistence.entityManager().createNativeQuery(sql);
        query.setParameter("id", id);
        List<Integer> resultList = query.getResultList();
        int result = resultList.get(0);
        return result;
    }

However I get this exception:

java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer

How can I solve this?

Advertisement

Answer

You can also use Number and call intValue():

Query query = entityManager.createNativeQuery("SELECT COUNT(*) FROM DOG WHERE ID =:id");
query.setParameter("id", 1);
int count = ((Number) query.getSingleResult()).intValue();
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement