【问题标题】:Three joined tables query with many-to-many relationship in JPA [closed]JPA中具有多对多关系的三个连接表查询[关闭]
【发布时间】:2016-07-22 23:25:12
【问题描述】:

共有三个表:HospitalMedical_ServiceLanguage_Service, 医院可提供医疗服务和语言服务。所以有两个多对多关系。

ERD Image

现在我想通过三个条件搜索医院:Postcode,Medical,Language,这个SQL怎么写。

【问题讨论】:

标签: java mysql sql jpa


【解决方案1】:

我认为您的 SQL 可能看起来像这样:

SELECT * FROM Hospital WHERE Postcode = 3000 AND
Hospital_id IN
    (SELECT Hospital_id FROM Hospital_Medical hm
    INNER JOIN Medical_Service m ON hm.Medical_id = m.Medical_id
    where Medical_name = 'Emergency') AND
Hospital_id IN
(SELECT Hospital_id FROM Hospital_Language hl
    INNER JOIN Language_Service l ON hl.Language_id = l.Language_id
    where Language_name = 'English')

【讨论】:

    【解决方案2】:

    应该是这样的:

    SELECT h 
    FROM Hospital h JOIN h.medicalService m JOIN h.languageService l
    WHERE h.postcode = :postCodeParameter 
    AND m.medicalName = :medicalNameParameter 
    AND l.languageName = :languageNameParameter
    

    假设您的实体映射正确。 HM_idHL_id 列也是不必要的,应该加入主键。

    【讨论】:

    • 这是JPQL格式,只有加入主键才能这样工作?
    猜你喜欢
    • 2016-07-22
    • 2014-01-22
    • 1970-01-01
    • 2017-09-05
    • 2012-06-15
    • 2016-11-10
    • 2014-10-08
    • 2017-06-23
    • 2020-12-21
    相关资源
    最近更新 更多