Доброе утро всем. Мне нужна помощь с запросом. Можно предположить, что я понимаю относительно сложные запросы SQL, но эта новомодная вещь HQL меня немного смущает.
У меня есть 5 объектов, от A до E. Я собираюсь использовать строчные буквы (от a до e) для ссылки на атрибуты в этих объектах, которые указывают на объект того же типа в верхнем регистре.
В моей структуре классов A имеет ссылку на B. B имеет ссылку на C. C имеет коллекцию (от одного до многих) из D. И D имеет ссылку на E.
/>D->E
A->B->C->D->E
\>D->E
...
В базе данных D - это таблица отношений, в которой хранятся внешние ключи как C, так и E (коллекция отображается обратным атрибутом D.c).
Мне нужен список всех, поскольку чья отдаленно связанная коллекция D содержит D, относящуюся к конкретному E. Я сделал этот псевдопросмотр (что-то похожее будет работать в MySQL), чтобы проиллюстрировать проблему:
select A
from D
left join E on D.e = E
left join C on D.c = C
left join B on B.c = C
left join A on A.b = B
where E = myfilter
Однако это не работает, потому что, очевидно, в HQL нет 'on'. Я пробовал варианты с синтаксисами, которые я нашел в руководствах, но hibernate всегда выдает какую-то непонятную ошибку или другую (невозможно разыменовать коллекцию, недопустимый токен, атрибут не отображается - хотя он и т. Д.) Основная проблема заключается в том, что Мне не нужно фильтровать по наличию фактического элемента коллекции (D), но атрибут одного (E).
Кто-нибудь знает, как помочь? Если вам нужны разъяснения, оставьте комментарий.