0

我正在使用 HQL 通过 DAO 类获取数据,但它抛出如下错误:

ERROR org.hibernate.hql.PARSER  - <AST>:0:0: unexpected AST node: query

以下是我的 Hql 查询:

select new com.shaikh.dto.UserResult ( user.userSurName, avg((select avg(v1.age)  from com.shaikh.dto.UserResult v1  where v1.joinDate between to_date(:dayFirst, 'dd-Mon-yy') and to_date(:dayLast, 'dd-Mon-yy') )),  avg(user.age) ) from com.shaikh.dto.User user group by user.userSurName";

String [] paramNames = { "dayFirst", "dayLast" };
Object [] values = { firstDay,lastDay};
return getHibernateTemplate().findByNamedParam(queryString, paramNames, values);

我使用 Oracle 11g 作为数据库。

如果我用简单的 avg(user.age) 替换嵌套的 avg() 函数进行测试,它工作正常,所以类映射似乎工作正常。虽然我收到了上述错误,这表明 hql 查询不正确。我不知道我该如何解决它。提前致谢 :)

谢谢和问候,
沙里克

4

2 回答 2

1

您正在将 HQL 与 SQL 相结合

to_date(:dayFirst, 'dd-Mon-yy') and to_date(:dayLast, 'dd-Mon-yy')

将这些参数作为日期参数传递。

于 2010-09-28T13:01:39.807 回答
0

您不需要使用 avg 两次...这是正确的 HQL:

select new com.shaikh.dto.UserResult ( user.userSurName, (select avg(v1.age)  from com.shaikh.dto.UserResult v1  where v1.joinDate between :dayFirst and :dayLast),  avg(user.age) ) from com.shaikh.dto.User user group by user.userSurName";

并通过 dayFirst 和 dayLast 作为java.util.Date

于 2010-09-29T15:42:20.423 回答