从SQL到HQL的转换不正确

时间:2014-04-02 16:02:09

标签: sql hql

我的HQL查询未返回正确的结果。

4个表:

  

GP_SERVICES_GROUP,
  GP_SERVICES,
  GP_APPLICATIONS_RULES和
  GP_APPLICATIONS_RULES_REQUEST。

GP_APPLICATIONS_RULES包含许多GP_SERVICES_GROUP和许多GP_APPLICATIONS_RULES_REQUEST。

GP_SERVICES_GROUP包含许多GP_SERVICES_GROUP。

这是我的 HQL查询:

SELECT serv
FROM GPServices serv
INNER JOIN serv.referencedGroup servGr
RIGHT JOIN servGr.listApplicationsRules rul 
INNER JOIN rul.rulesRequest rulReq
WHERE rulReq.status = :statusOK
AND rulReq.requestDate = (SELECT MAX(req2.requestDate) FROM GPApplicationsRulesRequest req2 WHERE req2.status = :statusOK

我的 SQL查询:

SELECT *
FROM GP_SERVICES serv
INNER JOIN GP_SERVICES_GROUP servGr ON serv.group_id = servGr.id
INNER JOIN GP_APPLICATIONS_RULES rul ON servGr.id = rul.service_group_id
INNER JOIN GP_APPLICATIONS_RULES_REQUEST rulReq ON rul.rules_request_id = rulReq.id
WHERE rulReq.status = 'OK'
AND rulReq.requestDate =
(SELECT MAX(req2.requestDate) FROM GP_APPLICATIONS_RULES_REQUEST req2 WHERE req2.status = 'OK')

使用HQL查询,我得到了一个不在app_rules_request中的额外application_rules。
看起来第二个条件(AND rulReq.requestDate = ...)被忽略了!

你能帮我吗?

非常感谢(抱歉我的英语不好)。

0 个答案:

没有答案