如何在 hibernate 中编写 count(*) 的查询

问题描述 投票:0回答:3

我想在 Hibernate 中执行以下查询?

select count(*) from login where emailid='something' and password='something'

hibernate hql
3个回答
95
投票

假设您的

login
表由
LoginClass
类映射,并带有
emailid
password
实例变量。然后你将执行类似的操作:

Query<?> query = session.createQuery(
                "select count(*) from LoginClass login where login.emailid=:email and login.password=:password");
        query.setParameter("email", "something");
        query.setParameter("password", "password");
        Long count = (Long)query.uniqueResult();
    

它应该返回

count
您正在寻找的结果。您只需根据您的类和参数名称调整名称即可。


1
投票

结果返回 BigDecimal,您需要将其从 Bigdecimal (java.math.BigDecimal) 转换为 Long,这样就不会出现错误,解决方案如下:

Query query = session.createSQLQuery(
        "select count(*) from login where login.emailid=:email and login.password=:password");
query.setString("email", "something");
query.setString("password", "password");
Long count = ((BigDecimal) query.uniqueResult()).longValue();

0
投票

您可以在 Hibernate 6 中这样查询:

public int getCount() {
    int result = 0;
    try {
        session.beginTransaction();

        result = session.createNativeQuery("select count(*) from user", Integer.class).uniqueResult();

        session.getTransaction().commit();

    } catch (Exception exception) {
        exception.printStackTrace();
    }

    return result;
}
© www.soinside.com 2019 - 2024. All rights reserved.