Можно ли выполнить JOIN в JPQL?
Я использую Objectdb, базу данных объектов, чтобы сохранять автомобили в аренду и запросы на аренду. Когда один из клиентов запрашивает аренду автомобиля, я должен проверить, доступен ли автомобиль в этот период (от даты начала до даты окончания). В моей базе данных есть две таблицы (два класса): машина и аренда. Это запрос для проверки наличия автомобиля:
public List<Car> findByType(CarType type, Date start, Date end) {
TypedQuery<Car> query = em.createQuery("SELECT c FROM Car c, Rental r "
+ "WHERE c.type = :cartype AND "
+ "((r.start > :start AND r.start > :end) OR "
+ "(r.end < :start AND r.end < :end))", entityClass);
...
Проблема в том, что этот запрос всегда возвращает 0 доступных автомобилей. Есть ли проблема с JOIN в JPQL? Или запрос плохо сформирован? благодарю вас
1 ответ
Запрос не является допустимым запросом JOIN, так как Car c и Rental r не связаны запросом.
Но это не объясняет, почему вы получаете пустые результаты. Попробуйте изолировать проблему, запустив меньшие запросы. Например, можете ли вы получить объекты аренды по датам в запросе "Только аренда" (без автомобиля)?