我有一张边storage 有个Ownerid外键约束User表
现在我要根据Ownerid分组,按Owner收到的礼物排序
oracle数据库
sql语言 select ownerid from storage group by ownerid order by count(gifti
d);用得HQL是String sql="select Ownerid from Storage group by Ownerid.userid order by count(giftid) desc";
出错
错误信息:Exception in thread "main" org.springframework.orm.hibernate3.HibernateQueryException: Invalid path: 'Ownerid.userid' [select Ownerid from entity.Storage group by Ownerid.userid order by count(giftid) desc]; nested exception is org.hibernate.hql.ast.QuerySyntaxException: Invalid path: 'Ownerid.userid' [select Ownerid from entity.Storage group by Ownerid.userid order by count(giftid) desc]
Caused by: org.hibernate.hql.ast.QuerySyntaxException: Invalid path: 'Ownerid.userid' [select Ownerid from entity.Storage group by Ownerid.userid order by count(giftid) desc]
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)Hibernate配置:
 <many-to-one name="Ownerid" class="entity.User" fetch="select" lazy="false">
            <column name="OWNERID" precision="22" scale="0" />
        </many-to-one>请帮忙解决,很急啊

解决方案 »

  1.   

    String sql="select from Storage group by Ownerid.userid order by count(giftid) desc"; 试试
      

  2.   

    String sql=" from Storage group by Ownerid.userid order by count(giftid) desc"; 试试我这个电脑没环境,没法试
      

  3.   

    楼上的
    都不对啊,说不是group by表达式
      

  4.   

    貌似你的hql实体没有别名啊,select Ownerid from Storage s group by s....
    或者你直接调用sql语句就是了,getSession().createSQLQuery(sql语句)