У меня есть структура типа каталога, представленная в виде объектов, т. Е. Думаю, объект Каталога и объект Файла.
Объект Каталога имеет коллекцию объектов Файла и набор объектов Каталога.
Iхочу получить корневой каталог и «предварительно загрузить» все каталоги и файлы.
Я пытаюсь:
String queryString = "SELECT DISTINCT d FROM " +
Directory.class.getSimpleName() +
" d LEFT JOIN FETCH d.files LEFT JOIN FETCH d.directories child LEFT JOIN FETCH child.files LEFT JOIN FETCH child.directories WHERE f.root = :isRoot);
Query query = em.createQuery(queryString);
query.setParameter("isRoot", true);
Directory dir = (Directory) query.getSingleResult();
Запрос работает, он просто не загружает все.Я получаю все корневые каталоги и корневые файлы, но когда я начинаю заходить в подкаталоги и получать файлы, делаются запросы.IE кажется, что рекурсия не работает.
Я также попробовал просто JOIN FETCH (который, я думаю, выполняет выборку внутреннего соединения) без удачи.
Есть идеи?