Я пытаюсь реализовать алгоритм вложенных подмножеств для обработки иерархий в реляционной базе данных (MySQL).Вложенные запросы MYSQL в JPA NativeQuery
Конкретно я отслеживаю это превосходное руководство по http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
Алгоритм для вставки дает следующий запрос, чтобы вставить новый узел и перенумеровать все узлы:
SELECT @myRight := rgt FROM nested_category
WHERE name = 'TELEVISIONS';
UPDATE nested_category SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE nested_category SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO nested_category(name, lft, rgt) VALUES('GAME CONSOLES', @myRight + 1, @myRight + 2);
Я пытался вставить выше в JPA Native запроса следующим образом:
Query query = em.createNativeQuery("SELECT @myRight := rgt FROM nested_category
WHERE name = 'TELEVISIONS';
UPDATE nested_category SET rgt = rgt + 2 WHERE rgt > @myRight;
UPDATE nested_category SET lft = lft + 2 WHERE lft > @myRight;
INSERT INTO nested_category(name, lft, rgt) VALUES('GAME CONSOLES', @myRight + 1, @myRight + 2);");
query.getResultList();
Но я получаю Внутренняя Exception: com.mysql.jdbc.exception s.jdbc4.MySQLSyntaxErrorException
Есть ли способ изменить вышеупомянутый запрос в эквивалентном запросе или каким-то образом позволить Native Query обрабатывать вышеуказанный запрос?
Я пробовал некоторый вложенный подзапрос следующий образом:
UPDATE nested_category SET rgt = rgt + 2 WHERE rgt > (SELECT rgt FROM nested_category WHERE name = 'TELEVISIONS');
Но я получаю # 1093 - Вы не можете указать целевую таблица «nested_category» для обновления в ЕКЕ
по-видимому, я могу 't обновить из таблицы, из которой я выбираю.