Java JPA中具有多对多关系的三个联接表查询
有三个表:Java JPA中具有多对多关系的三个联接表查询,java,mysql,sql,jpa,Java,Mysql,Sql,Jpa,有三个表:医院、医疗服务和语言服务, 医院可以提供医疗服务和语言服务。因此,存在两种多对多关系 现在我想按三个条件搜索医院:邮政编码、医疗和语言,如何编写此SQL。它应该类似于: SELECT h FROM Hospital h JOIN h.medicalService m JOIN h.languageService l WHERE h.postcode = :postCodeParameter AND m.medicalName = :medicalNameParameter AN
医院
、医疗服务
和语言服务
,
医院可以提供医疗服务和语言服务。因此,存在两种多对多关系
现在我想按三个条件搜索医院:邮政编码、医疗和语言,如何编写此SQL。它应该类似于:
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\u id
和HL\u id
列是不必要的,它应该被加入主键。我认为您的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')
嗨,弗兰克,欢迎来到SO。如果您需要查询方面的帮助,请包含到目前为止所需的代码,请参阅,您刚才不是问了这个问题吗?这是JPQL格式,只有连接的主键才能以这种方式工作?