0
@Repository
public interface GroupRepository extends JpaRepository<Group, String> {
//Other queries....
@Query(value = "with cte(group_id, parent_group_id, group_name) as("
+ "select group_id, parent_group_id, group_name "
+ "from hea.hea_group "
+ "where group_id = ?1 "
+ "union all "
+ "select g.group_id, g.parent_group_id, g.group_name "
+ "from hea.hea_group g "
+ "inner join cte on cte.group_id = g.parent_group_id "
+ "where g.parent_group_id is not null "
+ ") select * from cte", nativeQuery = true)
List<Object> getChildGroups(String groupId);
}
上面是我写的应该返回父组及其所有子项的查询。查询做了什么,当我用一个硬编码的组ID值替换?1并将该方法更改为没有参数时,它会做什么,但是当我尝试像上面那样运行它时,即使传入,它也不会返回任何内容完全相同的价值,我是硬编码。jpql原生查询未设置参数
下面是查询生成的sql。当我更换?用组ID在运行测试数据库时返回它应该得到的结果。
with cte(group_id, parent_group_id, group_name) as(select
group_id,
parent_group_id,
group_name
from
hea.hea_group
where
group_id = ?
union
all select
g.group_id,
g.parent_group_id,
g.group_name
from
hea.hea_group g
inner join
cte
on cte.group_id = g.parent_group_id
where
g.parent_group_id is not null) select
*
from
cte
检查由JPA发出的SQL。这通常是通过开启JPA提供程序的日志记录来完成的。 – Chris 2014-09-19 18:55:22
我将SQL添加到问题中,我没有看到任何问题,它似乎知道group_id是一个变量。 – jsb523 2014-09-19 19:03:20
你如何设置参数?请添加代码。 – pms 2014-09-20 06:25:12