hibernate执行hql出错
select (select count(gu.id) from Groupuser gu where gu.groupId = g.id) from Groups g where category = 1
上面的HQL在mysql5中执行正常,但在hibernate中却报错
query q = session.createquery("select (select count(gu.id) from Groupuser gu where gu.groupId = g.id) from Groups g where category = 1");
q.list();
错误如下::
错误信息org.springframework.orm.hibernate3.HibernateQueryException: unexpected A
ST node: query [select (select count(gu.id) from com.dipian.domain.Groupuser gu
where gu.groupId = g.id) from com.dipian.domain.Groups g where category = 1]; ne
sted exception is org.hibernate.hql.ast.QuerySyntaxError: unexpected AST node: q
uery [select (select count(gu.id) from com.dipian.domain.Groupuser gu where gu.g
roupId = g.id) from com.dipian.domain.Groups g where category = 1]
问题点数:20、回复次数:4Top
1 楼woolceo(努力升仙)回复于 2006-03-04 20:59:40 得分 8
好像两个表是个一对多关联关系...在pojo映射文件中用many-to-one把两个表关联了,然后执行如下语句:
select count(*) from Groupuser user where user.groupsCategory = :category
我不太了解你的业务逻辑,,,不过看到你使用这条语句用作hql可以看出楼主仿佛还没体会hibernate的精髓...Top
2 楼java_zhao_liang(Pisces·亮)回复于 2006-03-04 22:10:32 得分 6
说的没错,你不用这么费劲的去写hql语句,只要找出你想要的那条记录,然后跟他相关的记录one to many 就会使一个setTop
3 楼cenlmmx(学海无涯苦作舟)回复于 2006-03-04 22:52:23 得分 6
是的,只要你把两个表的映射关系写好,hibernate会帮你把连接语句生成,把数据得到.Top
4 楼Coeus(天空什么时候下起了雨)回复于 2006-03-05 09:43:45 得分 0
找到原因了。谢谢楼上各位。
我知道应该怎么去做,不过条件受限Top




