如何在Hibernate hql中获取具有最大值的对象?

如何在Hibernate hql中获取具有最大值的对象?,hibernate,hibernate-criteria,Hibernate,Hibernate Criteria,我正在使用Hibernate处理一个查询,下面是查询 List<ArticleP> articleP = session.createQuery("select ap, max(ap.lastPrice.price) from ArticleP ap " + "where ap.stock > 0 and ap.article.category.idCategory = :idCategory " + "group

我正在使用Hibernate处理一个查询,下面是查询

List<ArticleP> articleP = session.createQuery("select ap, max(ap.lastPrice.price) from ArticleP ap "
                + "where ap.stock > 0 and ap.article.category.idCategory = :idCategory "
                + "group by ap.article, ap.prov "
                + "order by ap.article.desc ASC")
                .setProperties(category)
                .list();
我得到一个多维数组,包含一个对象和一个max-double,但我想得到一个对象数组,它有一个max值,类似这样

List<ArticleP> articleP = session.createQuery("from ArticleP ap "
                    + "where ap.stock > 0 and ap.article.category.idCategory = :idCategory and max(ap.lastPrice.price) "
                    + "group by ap.article, ap.prov "
                    + "order by ap.article.desc ASC")
                    .setProperties(category)
                    .list();
List<ArticleP> articleP = session.createQuery("select ap, max(ap.lastPrice.price) from ArticleP ap "
            + "where ap.stock > 0 and ap.article.category.idCategory = :idCategory "
            + "and ap.id IN (select max(ap.lastPrice.price) from ArticleP ap 
            + "              group by ap.article, ap.prov "
            + "              order by ap.article.desc ASC)")
            .setProperties(category)
            .list();from phone p where p.id not in
我知道最后一次查询是不可能的,也不知道如何获得所需的数据


提前感谢。

Ypu可以定义一个子查询并在类似的情况下使用

List<ArticleP> articleP = session.createQuery("from ArticleP ap "
                    + "where ap.stock > 0 and ap.article.category.idCategory = :idCategory and max(ap.lastPrice.price) "
                    + "group by ap.article, ap.prov "
                    + "order by ap.article.desc ASC")
                    .setProperties(category)
                    .list();
List<ArticleP> articleP = session.createQuery("select ap, max(ap.lastPrice.price) from ArticleP ap "
            + "where ap.stock > 0 and ap.article.category.idCategory = :idCategory "
            + "and ap.id IN (select max(ap.lastPrice.price) from ArticleP ap 
            + "              group by ap.article, ap.prov "
            + "              order by ap.article.desc ASC)")
            .setProperties(category)
            .list();from phone p where p.id not in