Всем привет.
Пусть имеется объектная модель предметной области. Реализована она на языке с ООП (например, java), для хранения в РСУБД используется ORM фреймворк (например, hibernate), для запросов либо API(JPA), либо объектный язык (HQL).
Предположим в модели имеется такая цепочка сущностей (это просто пример): Grant-Project-Team-Manager-University (в принципе сейчас не важно как они связаны между собой один-к-одному, многие-ко-многим или один-ко-многим). В соответствующих классах имеются ссылки друг на друга, т.е. например грант имеет список с проектами, а проект имеет ссылку на грант и т.д.
Теперь, предположим, необходимо получить все гранты с указанием университетов, в которых работают руководители проектов, выполняющихся на данный грант, т.е. структура результата запроса такова:
Grant_1, University_1
Grant_2, University_1
Grant_3, University_2
и т.д.
Чтобы теперь выполнить такой запрос, необходимо связать с помощью join сущность Grant к University (как в JPA, так и в HQL).
Теперь собственно вопрос: есть ли инструменты, которые позволяют делать интуитивные запросы по модели без указания связей (связи, например, выводятся или получаются на основе мета-информации)? Т.е.
хочется писать что-то вроде такого псевдокода:
select Grant..University where Grant.country='Russia'
ведь между Grant и University существует однозначный путь.
На основе данного псевдокода строится запрос:
select g, u
from Grant as g join g.projects as pr join pr.teams as t join t.manager.uniersity as u
where g.country='Russia'
Можно без относительно к технологиям, можно статьи где ставилась подобная задачи и доказывалось, что это не нужно (невозможно, не продуктивно). Вообщем любая информация приветствуется. Сам не смог нагуглить.
Спасибо.