【问题标题】:Intersect is not working in HQL相交在 HQL 中不起作用
【发布时间】:2014-12-01 10:55:49
【问题描述】:

嘿,我正在使用 Hibernate、java 和 Sql 服务器来创建应用程序。在执行此操作时,我遇到了 HQL 不支持 Intersect 和 Union 的问题。对我来说,以下代码在本机 SQL 中工作,但在我处理 HQL 时它不起作用。

SQL

SELECT *
FROM LAB_TEST_SERVICES lts
WHERE lts.inttestid IN
(SELECT lsm.inttestid 
    FROM LAB_SPECIMEN_MAPPING lsm
    WHERE lsm.status = 1
intersect
SELECT ltl.inttestid 
    FROM LAB_TEST_LOCATION ltl
    WHERE ltl.status = 1)

HQL

String hql="FROM TEST_SERVICES_POJO lts WHERE lts.inttestid IN (SELECT lsm.inttestid FROM SPECIMEN_MAPPING_POJO lsm WHERE lsm.status = 1 intersect SELECT ltl.inttestid FROM TEST_LOCATION_POJO ltl WHERE ltl.status =1)";

谁能帮助我将 SQL 更改为 HQL。提前致谢。

【问题讨论】:

    标签: java sql sql-server hibernate hql


    【解决方案1】:

    您必须将 INTERSECT 指令替换为 AND 关系中的两个 EXISTS 子句。

    试试这个:

    SELECT *
    FROM LAB_TEST_SERVICES_POJO lts
    WHERE EXISTS
    (SELECT lsm.inttestid 
        FROM LAB_SPECIMEN_MAPPING lsm
        WHERE lsm.status = 1
        AND lts.inttestid = lsm.inttestid)
    AND EXISTS
    (SELECT ltl.inttestid 
        FROM LAB_TEST_LOCATION ltl
        WHERE ltl.status = 1
        AND lts.inttestid = ltl.inttestid)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-05
      • 1970-01-01
      • 2012-10-21
      • 1970-01-01
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多