Добрый день.
Нужно вот такой запрос:
SELECT name,
(SELECT id
FROM tree t2
WHERE t2.left_key < t1.left_key AND t2.right_key > t1.right_key
ORDER BY t2.right_key-t1.right_key ASC LIMIT 1) AS parent
FROM tree t1
WHERE t1.left_key >= 1 AND t1.right_key <= 6
ORDER BY right_key-left_key DESC
превратить в DQL. Либо в NativeSQL, но с правильным ResultMapping.
С DQL не получается из-за LIMIT, который не работает. А setMaxResults() не работает для вложенных запросов.
А с NativeSQL не получается из-за ResultMapping.
В сущности Tree есть следующие поля: id, name, left_key, right_key, level.
Запрос должен возвращать таблицу с колонкой parent, которая обозначает id родителя.