Нет способа выполнить динамическое число объединений на стороне базы данных, поэтому нет способа фактически извлечь все объекты в одном совке.Самый быстрый общий способ сделать это - сделать один запрос на уровень, что JPA сделает для вас (не слишком быстро, но это не требует дополнительных затрат, если вы делаете это лениво).
Если вы зналиподробнее о конкретных данных (например, в 99,9999% случаев имеется ровно три уровня) вы можете выполнить микрооптимизацию, всегда начиная с тройного внешнего самосоединения - и здесь, на самом деле, никакая реализация JPA не поможет вам.
Как правило, я думаю, что ваш дизайн не имеет смысла.Если у вас много таких данных, рассмотрите базу данных графа.