Java HQL嵌套子查询
我有这样的领域:国家有城市,城市有办公室,办公室有服务。我需要查找所有具有提供指定服务id的办事处的国家/地区。我当前的版本是:Java HQL嵌套子查询,java,hibernate,hql,Java,Hibernate,Hql,我有这样的领域:国家有城市,城市有办公室,办公室有服务。我需要查找所有具有提供指定服务id的办事处的国家/地区。我当前的版本是: SELECT c FROM Country c WHERE EXISTS( SELECT ct FROM c.cities ct WHERE EXISTS( SELECT o FROM ct.offices o
SELECT c FROM Country c
WHERE EXISTS(
SELECT ct FROM c.cities ct
WHERE EXISTS(
SELECT o FROM ct.offices o
WHERE EXISTS(
SELECT s.id FROM o.services s
WHERE s.id = :id
)
)
)
所以,我是HQL的新手。最好的方法是什么?我的版本可以吗?我也在考虑使用
左连接选择DISTINCT
。我认为您的查询没有任何问题,但这可能更具可读性
SELECT c FROM Country
WHERE EXISTS (
SELECT s.id FROM
c.cities ct
JOIN ct.offices o
JOIN o.services s
WHERE s.id = :id
)