以下是我的sql语句:    SELECT * FROM (select * from album as b order by b.publishtime desc limit 10) as a order by a.click desc limit 5;语句功能是先在专辑表中找出10个最后发布的专辑,然后在这10个专辑中找出点击数最多的5个专辑。hql语句不支持子表查询,而且子表里面也不知道如何实现limit 10 这个功能(括号里面的)。
现在越来越感觉hql不好用了,似乎一点都不灵活,很考验人呀,据说是任何sql语句都可以转换为hql,但是自己对hql还不熟悉呀,一点没感觉到 hql能跟sql的灵活性相比。
希望各位高手给我解答! 

解决方案 »

  1.   

    语句功能是先在专辑表中找出10个最后发布的专辑,然后在这10个专辑中找出点击数最多的5个专辑。找出10个最后发布的专辑
    session.createQuery("from album as b order by b.publishtime desc").setMaxResults(10);找出点击数最高的可以使用代码进行查找和排序。
      

  2.   

    普通HQL查询实体方式 使用Query的setMaxResult和setFirstResult方法来实现
      

  3.   

    嵌套select * from。
    累不累?!
      

  4.   

    试试这样可以不:session.createQuery("from album as b order by b.publishtime desc b.click desc").setFirstResult(1).setMaxResults(5); 
      

  5.   

    hibernate不是支持本地的数据库查询语句的嘛???
    直接用你上面写的那个就好了
    只是返回的结果不好弄吧了
      

  6.   

    hibernate用到hql就是杯具了。
    想想查询代码分别在整个系统语句中,多恐怖,这样的编程和直接用JDBC有什么区别。我们用hibernate是因为hibernate能屏蔽底层查询,而你的系统如果必须用底层查询,那么就没必要用这个。
    改用ibatis吧。