Возможно ли выполнить 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? Или запрос плохо сформирован? благодарю вас


person SagittariusA    schedule 28.05.2013    source источник


Ответы (1)


Запрос не является допустимым запросом JOIN, так как Car c и Rental r не связаны запросом.

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

person ObjectDB    schedule 30.05.2013