mysql单表递归查询(jpa[org.hibernate.QueryException: Space is not allowed afterQuery parameter prefix ':'])

本文介绍了如何在MySQL中进行单表递归查询以构建组织树结构,包括根据指定ID获取所有子节点的方法,以及查询指定ID的所有父节点的线性结构。同时,文章还解决了在JPA查询中遇到的'[:]'错误,提示Space不允许出现在Query参数前缀':'之后,解决方案是在':'前添加转义字符'\'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

组织表字段id,及parentId,数据库mysql5.7

①解决的问题点:需要查出一个组织树结构,根据指定ID获取当前ID的所有子树。

select  id,

        parent_id 
from    (select * from hrm_organization
         order by parent_id, id) organization,
        (select @pv := '18') initialisation
where   find_in_set(parent_id, @pv) > 0

and     @pv := concat(@pv, ',', id);


②解决的问题点:查出一条线性结构,查询当前ID的所有父级

SELECT
t.id,
@pv := t.parent_id
FROM
(
SELECT
*
FROM
hrm_organization
ORDER BY
id DESC
) t
JOIN (SELECT @pv := 31 from hrm_organization) tmp
WHERE
t.id =@pv;


③解决【:】错误问题:在:前加转义字符【\\】


SELECT @pv \\:= :organizationId

@Query(nativeQuery = true, value="SELECT id,name,budget_number,parent_id,description FROM hrm_organization WHERE del_flag = FALSE ORDER BY parent_id,id) organization, (SELECT @pv \\:= :organizationId) initialisation WHERE find_in_set(parent_id, @pv) > 0 AND @pv \\:= concat(@pv, ',', id) ")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值