错误无法在 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);

有关详细信息,请阅读此 http://docs.oracle.com/javaee/6/api/javax/persistence/Query.html#getParameter%28java.lang.String,%20java.lang.Class%29

查询没有名为 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.