【问题标题】:HQL nested subqueriesHQL 嵌套子查询
【发布时间】:2014-01-04 10:55:46
【问题描述】:

我有这样的域:国家有城市,城市有办公室,办公室有服务。我需要找到所有设有提供指定服务 ID 的办事处的国家/地区。我目前的版本是:

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 的新手。最好的方法是什么?我的版本好吗?我也在考虑SELECT DISTINCT 和LEFT JOIN。

【问题讨论】:

    标签: java hibernate hql


    【解决方案1】:

    我认为您的查询没有任何问题,但这可能更具可读性。

    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
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-21
      • 1970-01-01
      • 2014-05-12
      • 2021-06-16
      • 1970-01-01
      相关资源
      最近更新 更多