我的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 = ...)被忽略了!
你能帮我吗?
非常感谢(抱歉我的英语不好)。