Можно ли выполнить 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 не связаны запросом.

Но это не объясняет, почему вы получаете пустые результаты. Попробуйте изолировать проблему, запустив меньшие запросы. Например, можете ли вы получить объекты аренды по датам в запросе "Только аренда" (без автомобиля)?

Другие вопросы по тегам