2017-10-16 99 views
-1

这是查询工作完全与MySQL,但它不与HQL名称查询工作的任何人能帮助我,这是感激如何MySQL的子查询转换成HQL名称查询

这是我的SQL

SELECT * FROM (SELECT * FROM EsEvent ORDER BY eventTimestamp DESC) e WHERE isReset=1 GROUP BY eventId; 

这是我写的HQL名称查询。

FROM (FROM EsEvent es ORDER BY es.eventTimestamp DESC) EsEvent e WHERE e.isReset=1 GROUP BY e.eventId 

但这不是一个错误的工作它会和高达

未能创建SessionFactory对象:org.hibernate.HibernateException:错误的命名查询:HQL_GET_ALL_ESEVENT_GROUP_BY_EVENT_ID_ORDER_BY_EVENT_TIMESTAMP_AND_RESET_ID_ONE

我目的是在我评估我需要的订单条款之前,任何人都可以帮助我。

回答

0

在HQL试试这个:

SELECT e FROM 
(SELECT es FROM EsEvent es ORDER BY es.eventTimestamp DESC) EsEvent e 
WHERE e.isReset=1 GROUP BY e.eventId 

但是一个简单的方法是:

SELECT es FROM EsEvent es 
WHERE es.isReset=1 
GROUP BY es.eventId 
ORDER BY es.eventTimestamp DESC 

关注:

通常,当你在你的领域列表中使用GROUP BY条款您必须仅使用分组字段或聚合(按功能)字段

+0

仍然是同样的错误。我只需要实现我的目的,如果有任何替代方式,我可以尝试这一点。 – randikaisuru

+0

@randikaisuru尝试将SELECT e.eventId并告诉我,如果您的查询工作 –

+0

仍然是相同的错误。但这是完美的工作“SELECT e.eventId FROM EsEvent e WHERE e.isReset = 1 GROUP BY e.eventId”但是当它添加子查询部分时,它将以错误结束。 – randikaisuru