2017-02-01 10 views
2

В моей JPA модели есть 3 таблицы A, B, C.JPQL: Доступ к внешним атрибутам в РЕГИСТРИРУЙТЕСЬ подзапроса

Мой запрос:

SELECT a FROM A a 
WHERE EXISTS (
    SELECT c from C c LEFT JOIN B b" 
    ON c = b.c AND b.a = a 
    WHERE c.date BETWEEN CURRENT_TIMESTAMP AND :pUntil AND b.a IS NULL 
) 

фона является то, что я хочу, все сущности A, которые не имеют записи в b, которая связана с событием C в будущем.

Проблема заключается в том, что я получаю Column 'T0.ID' is either not in any table in the FROM list or appears within a join specification and is outside the scope of the join specification or ...

EDIT : Думайте о нем, как это пользовательская таблица, C являются события, и B сохраняет регистрацию пользователей для событий. Я хочу, чтобы все пользователи, которые не регистрировались для всех будущих событий, до параметра pUntil.

+0

нет причин, по которым они не должны быть ссылочными ИМХО, поднимите ошибку у вашего провайдера. –

+0

Спасибо. Я согласен, что это должно сработать. «a» ссылается в условии WHERE, но не в состоянии ON. Это странное поведение. Если вы знаете, как обойти это ограничение, дайте мне знать. –

ответ

1

Хотя я согласен с Нилом, я работал над этой проблемой, изменив свой запрос. Вот новый запрос:

SELECT a FROM A a 
WHERE EXISTS (
    SELECT c from C c 
    WHERE c.date BETWEEN CURRENT_TIMESTAMP AND :pUntil 
    AND NOT EXISTS (
     SELECT b from B b 
     WHERE b.c= c and b.a = a 
    ) 
) 

 Смежные вопросы

  • Нет связанных вопросов^_^