Returning result of count native query using EntityManager in Java?

33,103

Solution 1

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();

Solution 2

Make sense to use Query#getSingleResult method:

Query query = entityManager.createNativeQuery("SELECT COUNT(*) FROM DOG WHERE ID =:id");
query.setParameter("id", 1);
int count = ((BigInteger) query.getSingleResult()).intValue();

Solution 3

Simply try this:

public int returnCountOfDogTable(String id) {
//...
    List<BigDecimal> resultList = query.getResultList();
    BigDecimal result = resultList.get(0);
    return result.toIntValue();
}
Share:
33,103

Related videos on Youtube

java123999
Author by

java123999

Updated on January 20, 2022

Comments

  • java123999
    java123999 over 2 years

    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?

  • java123999
    java123999 over 7 years
    ok, and how to then change big decimal back to int in return value?
  • Shark
    Shark over 7 years
    perhaps result.toIntValue() ?