Returning result of count native query using EntityManager in Java?
Clash Royale CLAN TAG#URR8PPP
Returning result of count native query using EntityManager in Java?
I have the following SQL Query :
SQL Query :
SELECT COUNT(*) FROM DOG where ID = 'SampleId';
I am trying to write this in java
:
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?
3 Answers
3
Simply try this:
public int returnCountOfDogTable(String id)
//...
List<BigDecimal> resultList = query.getResultList();
BigDecimal result = resultList.get(0);
return result.toIntValue();
perhaps
result.toIntValue()
?– Shark
Oct 4 '16 at 16:17
result.toIntValue()
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();
You can also use Number
and call intValue()
:
Number
intValue()
Query query = entityManager.createNativeQuery("SELECT COUNT(*) FROM DOG WHERE ID =:id");
query.setParameter("id", 1);
int count = ((Number) query.getSingleResult()).intValue();;
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
ok, and how to then change big decimal back to int in return value?
– java123999
Oct 4 '16 at 16:16