【问题标题】:Use Subquery in FROM clause Hibernate HQL在 FROM 子句 Hibernate HQL 中使用子查询
【发布时间】:2015-12-31 07:14:56
【问题描述】:

这是我的 HQL 查询,它抛出“Invalid Token SELECT”。我们如何实现它,我读到 Hibernate 不支持 From 子句中的子查询。

SELECT subQ.workItemId ,subQ.subject, subQ.workItemCrtdDt, subQ.workItemDueDt, subQ.workItemRcpntNm, subQ.workItemCrtrNm, subQ.lkWorkItemStatusCd,subQ.lkWorkItemPriorityCd 
                    FROM 
                    (SELECT WI FROM WorkItem WI, WorkItemRecipient WIR 
                      WHERE WI.workItemId = WIR.workItem.id and
                    (WI.workItemCreateUserId=:userId or 
                    (WIR.recipientId= :userId or (WIR.recipientId= :allUserId and WIR.recipientOrgId= :userOrgId)))) As subQ

【问题讨论】:

    标签: hibernate hql


    【解决方案1】:

    您的查询可以简单地重写为常规选择,您只需要解决 subQ 到正确的别名。

    假设:

    表:WorkItem 包含以下列:workItemId、subject、workItemCrtdDt、workItemDueDt、workItemCrtrNm、lkWorkItemStatusCd、lkWorkItemPriorityCd

    表:WorkItemRecipient 有以下列:workItemRcpntNm

    那么查询将是:

    SELECT WI.workItemId ,WI.subject, WI.workItemCrtdDt, WI.workItemDueDt, WIR.workItemRcpntNm, WI.workItemCrtrNm, WI.lkWorkItemStatusCd,WI.lkWorkItemPriorityCd 
        FROM WorkItem WI, WorkItemRecipient WIR 
        WHERE WI.workItemId = WIR.workItem.id 
        and (WI.workItemCreateUserId=:userId or  WIR.recipientId= :userId or (WIR.recipientId= :allUserId and WIR.recipientOrgId= :userOrgId)))
    

    From 子句中不需要任何子选择。

    【讨论】:

      猜你喜欢
      • 2014-02-12
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 1970-01-01
      • 2020-06-05
      相关资源
      最近更新 更多