在 HQL 上使用 Min、Max 和 Count

Posted

技术标签:

【中文标题】在 HQL 上使用 Min、Max 和 Count【英文标题】:Using Min, Max and Count on HQL 【发布时间】:2010-09-24 18:14:50 【问题描述】:

hibernate HQL查询是否支持使用select min、max、count等sql函数?

喜欢:

select min(p.age) from person p

谢谢

【问题讨论】:

docs.jboss.org/hibernate/core/3.3/reference/en/html/… 见主题 14.7。 【参考方案1】:

是的,HQL 支持 min()max()count()

请参阅 Hibernate 文档中的 aggregate functions。

【讨论】:

我不得不否决这个答案,因为它很快就会被弃用。答案给人的印象是只有这三个功能存在,而其他功能也很多【参考方案2】:

这就是我在 Hibernate 中使用 max 的方式:

public long getNextId()
long appId;         
try
            Session session = HibernateUtil.getAdmSessionFactory().getCurrentSession();
            Transaction t = session.beginTransaction();
            String sequel = "Select max(JAdmAppExemptionId) from JAdmAppExemption";
            Query q = session.createQuery(sequel);
            List currentSeq = q.list();
            if(currentSeq == null)
                return appId;
            else
            appId = (Long)currentSeq.get(0);
            return appId+1;
            

        catch(Exception exc)
            System.out.print("Unable to get latestID");
            exc.printStackTrace();

        
        return 0;

    

【讨论】:

【参考方案3】:

支持一些聚合函数:查看manual

【讨论】:

不幸的是,链接已更改。你能重新检索页面吗?谢谢! 感谢您的提醒。链接固定

以上是关于在 HQL 上使用 Min、Max 和 Count的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 LINQ 或 HQL 执行以下 SQL 查询

min/max优化,count ,group by

在 postgresql 中使用 MIN, MAX, (SUM/COUNT) 子查询

不能在 Group by/Order by/Where/ON 子句中使用 Group 或 Aggregate 函数(min()、max()、sum()、count()、...等)

Django学习路17_聚合函数(Avg平均值,Count数量,Max最大,Min最小,Sum求和)基本使用

Django学习路17_聚合函数(Avg平均值,Count数量,Max最大,Min最小,Sum求和)基本使用