在Java中使用EntityManager返回计数本机查询的结果?

jav*_*999 1 java int integer entitymanager classcastexception

我有以下内容 SQL Query :

SELECT COUNT(*) FROM DOG where ID = 'SampleId';
Run Code Online (Sandbox Code Playgroud)

我试着写这个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;
    }
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个例外:

java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

小智 7

使用Query#getSingleResult方法是有意义的:

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


Dhe*_*rik 5

您还可以使用Number并致电intValue()

Query query = entityManager.createNativeQuery("SELECT COUNT(*) FROM DOG WHERE ID =:id");
query.setParameter("id", 1);
int count = ((Number) query.getSingleResult()).intValue();
Run Code Online (Sandbox Code Playgroud)