错误无法在 JPA 中找到名为 [total_recods] 的参数
ERROR Unable to locate parameter named [total_recods] in JPA
我想通过此方法 getDataCount() return 来自 "total_recods"(查询类型)的整数。如何将 total_recods 作为整数获取?
我编辑了我的代码,但它 return 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;
}
解决问题后,代码如下:
提示:计数类型应为 long
@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;
}
你可以写query.getParameter("total_recods",Integer.class);
查询没有名为 total_recods 的参数。这是一个没有参数的 NATIVE 查询。 JPQL 可以有(命名的)参数。这是 SQL,仅使用数字参数(而您的 SQL 没有)。
如果您想要获取查询结果,请查看 query.getSingleResult
return 值!
您放弃了结果。你应该这样做:
query= em.createNativeQuery("SELECT count(*) FROM Data");
int count = ((Number) query.getSingleResult()).intValue();
注意到我使用了 Number
,因为一些数据库 return Long
而其他 return 一个 BigDecimal
.
我想通过此方法 getDataCount() return 来自 "total_recods"(查询类型)的整数。如何将 total_recods 作为整数获取? 我编辑了我的代码,但它 return 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;
}
解决问题后,代码如下: 提示:计数类型应为 long
@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;
}
你可以写query.getParameter("total_recods",Integer.class);
查询没有名为 total_recods 的参数。这是一个没有参数的 NATIVE 查询。 JPQL 可以有(命名的)参数。这是 SQL,仅使用数字参数(而您的 SQL 没有)。
如果您想要获取查询结果,请查看 query.getSingleResult
return 值!
您放弃了结果。你应该这样做:
query= em.createNativeQuery("SELECT count(*) FROM Data");
int count = ((Number) query.getSingleResult()).intValue();
注意到我使用了 Number
,因为一些数据库 return Long
而其他 return 一个 BigDecimal
.