我试图通过使用
来获取s.eventTime
的日期和年份
DAY(s.eventTime) as theDay, MONTH(s.eventTime) as theMonth, YEAR(s.eventTime) as theYear
然后我使用GROUP BY theYear, theMonth, theDay
这给了我错误:org.hibernate.exception.SQLGrammarException: Unknown column 'theYear' in 'group statement'
我之前在SQL中使用过这个方法,并想知道它在HQL中是否无效?如果是这样,有人有建议吗?
答案 0 :(得分:1)
不要在列上使用别名。请按名称参阅。就像这个例子一样 http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html#queryhql-grouping
select cat
from Cat cat
join cat.kittens kitten
group by cat.id, cat.name, cat.other, cat.properties
having avg(kitten.weight) > 100
order by count(kitten) asc, sum(kitten.weight) desc
答案 1 :(得分:1)
您似乎无法将day()
,month()
或year()
投放到as
,所以我选择了以下内容:
DAY(s.eventTime), MONTH(s.eventTime), YEAR(s.eventTime)
然后以相同的方式分组:
GROUP BY DAY(s.eventTime), MONTH(s.eventTime), YEAR(s.eventTime)
答案 2 :(得分:0)
second(...), minute(...), hour(...), day(...), month(...), and year(...)
等Expressions只能在where子句中使用。
如果您需要执行无法通过HQL生成的查询,您始终可以在数据库中创建视图,并将视图映射为具有Hibernate的实体。它的工作方式与表格相同。