HQL先排序后分组的问题

时间:2021-06-19 02:42:34
如下面的SQL:
select * from (select * from table order by id desc) t group by type

如何用HQL来表达,或者这个问题用HQL如何解决。

6 个解决方案

#1


可以用hibernate执行SQL语句,具体方法如下:
List cats = sess.createSQLQuery("select {cat.*} from cats cat")
    .addEntity("cat", Cat.class)
    .list();
这个查询指定了: 

SQL查询语句,它带一个占位符,可以让Hibernate使用字段的别名. 

查询返回的实体,和它的SQL表的别名. 

addEntity()方法将SQL表的别名和实体类联系起来,并且确定查询结果集的形态。 

addJoin()方法可以被用于载入其他的实体和集合的关联. 

List cats = sess.createSQLQuery(
        "select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"
    )
    .addEntity("cat", Cat.class)
    .addJoin("kitten", "cat.kittens")
    .list();

原生的SQL查询可能返回一个简单的标量值或者一个标量和实体的结合体。 

Double max = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat")
        .addScalar("maxWeight", Hibernate.DOUBLE);
        .uniqueResult();

#2


看不出这个sql这么写有什么意义

#3


你也许给我一样,没有真正明白HIBERNATE呀,在hibenate中,表是可以进行连接配置的,如果表进行了联系配置呀,你这种查询也就可明显啦!

#4


#5


up

#6


该回复于2015-05-26 10:04:19被管理员删除

#1


可以用hibernate执行SQL语句,具体方法如下:
List cats = sess.createSQLQuery("select {cat.*} from cats cat")
    .addEntity("cat", Cat.class)
    .list();
这个查询指定了: 

SQL查询语句,它带一个占位符,可以让Hibernate使用字段的别名. 

查询返回的实体,和它的SQL表的别名. 

addEntity()方法将SQL表的别名和实体类联系起来,并且确定查询结果集的形态。 

addJoin()方法可以被用于载入其他的实体和集合的关联. 

List cats = sess.createSQLQuery(
        "select {cat.*}, {kitten.*} from cats cat, cats kitten where kitten.mother = cat.id"
    )
    .addEntity("cat", Cat.class)
    .addJoin("kitten", "cat.kittens")
    .list();

原生的SQL查询可能返回一个简单的标量值或者一个标量和实体的结合体。 

Double max = (Double) sess.createSQLQuery("select max(cat.weight) as maxWeight from cats cat")
        .addScalar("maxWeight", Hibernate.DOUBLE);
        .uniqueResult();

#2


看不出这个sql这么写有什么意义

#3


你也许给我一样,没有真正明白HIBERNATE呀,在hibenate中,表是可以进行连接配置的,如果表进行了联系配置呀,你这种查询也就可明显啦!

#4


#5


up

#6


该回复于2015-05-26 10:04:19被管理员删除