【发布时间】:2014-02-15 08:25:12
【问题描述】:
我正在尝试实现嵌套子集算法来处理关系数据库 (MySQL) 中的层次结构。
具体来说,我在 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 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();
但我得到一个内部异常:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
有没有办法将上面的查询修改为等效的查询,或者让 Native Query 处理上面的查询?
我尝试了一些嵌套子查询如下:
UPDATE nested_category SET rgt = rgt + 2 WHERE rgt > (SELECT rgt FROM nested_category WHERE name = 'TELEVISIONS');
但是我得到了一个 #1093 - 您不能在 FROM 子句中指定目标表 'nested_category' 进行更新
显然我无法从我选择的表中更新。
【问题讨论】:
标签: mysql sql jakarta-ee jpa