ожидается путь для присоединения JPA Hibernate MySQL

0

Я использую составную PK в своем приложении с двумя таблицами и одной таблицей соединения.

Я написал этот запрос для функции:

   @Repository
public interface HospitalDoctorDao extends JpaRepository<HospitalDoctor, Integer>{

@Query("select hd from HospitalDoctor hd join hospital on hd.hospital_id=hospital.id join doctor on hd.doctor_id = doctor.id where hospital_id = ?1  and doctor_id = ?1")
HospitalDoctor findByHospitalIdAndDoctorId(int hospital_id, int doctor_id);
}

и я получаю ошибку Путь, ожидаемый для файла! В MySQL все работает. Как работает Hibernate в этом случае? Как я должен написать этот запрос? Вот моя @Entity таблицы join:

    @Entity
@Table(name = "hospital_doctor")
public class HospitalDoctor {

    @Embeddable
    static class HosdocPK implements Serializable {
        private int hospitalId;
        private int doctorId;
    }

    @EmbeddedId
    @JsonBackReference
    public HosdocPK hosdocPK;



    @JsonManagedReference
    @MapsId("DoctorId")
    @ManyToOne(optional = false)
    @JoinColumn(name = "doctorId", referencedColumnName = "id")
    private Doctor doctor;

    @JsonManagedReference
    @MapsId("HospitalId")
    @ManyToOne(optional = false)
    @JoinColumn(name = "hospitalId", referencedColumnName = "id")
    private Hospital hospital;



    @Column(name = "Id")
    private int id;
    @Temporal(TemporalType.DATE)
    private Date contract_start_date;
    @Temporal(TemporalType.DATE)
    private Date contract_end_date;
    private String position;
    private String supervisor;
    private boolean part_time;


    Getters and setters
}
Теги:
database
hibernate
jpa

1 ответ

1

Ваш запрос неверен.

Пытаться:

select hd from HospitalDoctor hd where hd.hospital.id = ?1 and hd.doctor.id = ?2
  • 0
    Спасибо! Это работает, но теперь я получаю внутреннюю ошибку сервера. Необязательный параметр int doctor_id присутствует, но не может быть преобразован в нулевое значение из-за того, что он объявлен как примитивный тип. Подумайте об объявлении его как обёртки объекта для соответствующего типа примитива. Я использую метод Get для этого с URL "/ api / hospitaldoctors / {hospital_id} / {doctor_id}". Как я должен объявить это как обертку объекта?
  • 0
    Да, в вашем @PathVariable (если вы используете Spring) определите его как Integer.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню