2016-10-04 7 views
-1

У меня есть следующие SQL Query :Возвращаемый результат собственного запроса count с использованием EntityManager в Java?

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

Я пытаюсь написать в 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; 
    } 

Однако я получаю это исключение:

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

Как я могу решить эту проблему?

ответ

1

Просто попробуйте это:

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

нормально, и как то изменить большую десятичный обратно в целом в возвращаемом значении? – java123999

+0

возможно 'result.toIntValue()'? – Shark

3

имеет смысл использовать Query # getSingleResult метода:

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