我想在此方法getDataCount()上返回来自" total_recods"(查询类型)的整数。如何将total_recods作为整数? 我编辑我的代码,但是当我在我的数据库中有一些数据时,它返回0。
@Override
public int getDataCount() {
// TODO Auto-generated method stub
Query query=null;
int count=0;
try {
query= em.createNativeQuery("SELECT count(*) AS total_recods FROM Data");
count = ((Number) query.getSingleResult()).intValue();
logger.info(Logger.EVENT_SUCCESS,count);
} catch (Exception e) {
logger.error(Logger.EVENT_FAILURE, e.getMessage());
}
return count;
}
解决问题后,代码如下: 提示:计数sholud的类型很长
@Override
public long getDataCount() {
// TODO Auto-generated method stub
long count=0;
try {
count = (long)em.createQuery("select count(*) from Data")
.getSingleResult();
} catch (Exception e) {
logger.error(Logger.EVENT_FAILURE, e.getMessage());
}
return count;
}
答案 0 :(得分:1)
你放弃了结果。这就是你应该这样做的方式:
query= em.createNativeQuery("SELECT count(*) FROM Data");
int count = ((Number) query.getSingleResult()).intValue();
注意到我使用了Number
,因为某些数据库返回Long
而其他数据库返回BigDecimal
。
答案 1 :(得分:0)
您可以写query.getParameter("total_recods",Integer.class);
答案 2 :(得分:0)
查询没有名为 total_recods 的PARAMETER。它是一个没有参数的NATIVE查询。 JPQL可以有(命名)PARAMETERS。这是SQL,仅使用NUMBERED PARAMETERS(而且您的SQL没有任何参数)。
如果您想获得查询结果,请查看query.getSingleResult
返回值!