2014-10-07 23 views
2

Hai所有我使用Hibernate,java和Sql服務器來創建應用程序。在做這件事時,我遇到了HQL不支持Intersect和Union的問題。對我來說,下面的代碼在本機SQL中工作,但在處理HQL時它不起作用。Interscct在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。提前致謝。

回答

2

您必須用AND關係中的兩個EXISTS子句替換INTERSECT指令。

試試這個:

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)