Mysql 如何在命名查询中编写联接?

Mysql 如何在命名查询中编写联接?,mysql,database,hibernate,Mysql,Database,Hibernate,我试图编写此查询,但它引发了一个异常 @NamedQueries({ @NamedQuery(name = "doctor_searchDoctor", query= "SELECT d FROM Doctor d " + "WHERE ((d.englishName = :P_NAME_EN OR :P_NAME_EN = '-1' ) " + "AND d.id IN (select

我试图编写此查询,但它引发了一个异常

@NamedQueries({
@NamedQuery(name = "doctor_searchDoctor", 
              query= "SELECT d FROM Doctor d "
                    + "WHERE ((d.englishName = :P_NAME_EN OR :P_NAME_EN = '-1' ) "
                    + "AND d.id IN (select c.doctorId from Clinic c "
                    + "JOIN DoctorSpecializations s "
                    + " where ((c.cityId = :D_CITY_ID OR :D_CITY_ID = -1 ) AND (s.specializationId = :D_SPECIALIZATION_ID OR :D_SPECIALIZATION_ID = -1))))"

  ),
})
在调试代码时,我发现了异常

@NamedQueries({
@NamedQuery(name = "doctor_searchDoctor", 
              query= "SELECT d FROM Doctor d "
                    + "WHERE ((d.englishName = :P_NAME_EN OR :P_NAME_EN = '-1' ) "
                    + "AND d.id IN (select c.doctorId from Clinic c "
                    + "JOIN DoctorSpecializations s "
                    + " where ((c.cityId = :D_CITY_ID OR :D_CITY_ID = -1 ) AND (s.specializationId = :D_SPECIALIZATION_ID OR :D_SPECIALIZATION_ID = -1))))"

  ),
})
org.hibernate.hibernateeexception:命名查询中的错误:doctor\u searchDoctor

您的WHERE d.englishName blah中缺少一个,请在Clinic c之后加上一个

完整的语句是select c.doctorId from Clinic c JOIN DoctorSpecializations