Spring Data JPA无法在db2的本机子查询中传递命名参数

时间:2019-06-19 04:46:49

标签: java spring-boot spring-data-jpa db2

无法在spring数据jpa中的$users = User::where('status', 1); $users_query = str_replace(array('?'), array('\'%s\''), $users->toSql()); $users_query = vsprintf($query, $users->getBindings()); dump($users_query); $all_users = $users->get(); 中传递命名参数

我的仓库:

@NamedNativeQuery

基础数据库为 @Query(value = "select stat.desc as desc," + " stat.priority as priority," + " (case when sum(activeUser) is null then 0 else sum(activeUser) end) as activeUser," + " (case when sum(totalUser) is null then 0 else sum(totalUser) end) as totalUser" + " from lookup.user stat left outer join" + " (" + " select user.role as role, " + " sum (case when user.STATUS = 'ACTIVE' then 1 else 0 end) as activeUser," + " count(*) as totalUser," + " user.group as group" + " from Ctrl.user user" + " where user.group =:userGroup " + " and user.branch_code =:branchCode " + " group by user.role,user.group" + " ) as tbl on stat.role = tbl.role and stat.group = tbl.group" + " where stat.group =:userGroup " + " group by stat.desc, stat.priority" + "", nativeQuery = true) public List<com.cimb.dto.UserStatusSummary> getSummaryReport(@Param(value = "userGroup") String userGroup, @Param(value = "branchCode") String branchCode);

当我尝试访问该方法时,出现以下错误。

DB2

如果我用值对那些命名参数进行硬编码,那么它就起作用了。

我不能使用 DB2 SQL Error: SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.25.13 ,因为实际查询中包含一些子查询,因此我不能使用jpql

编辑更新

经过一番挖掘,我发现我传递的参数在子查询中,因为JPQL没有子查询的概念,因此没有注入命名参数,这会导致语法错误。

现在如何使用JPA

中的子查询

请帮助。

1 个答案:

答案 0 :(得分:0)

基于DB2错误代码> SQLCODE:-302,SQLSTATE:22001

对于目标列或目标值,输入变量或参数号位置编号的值无效或太大

DB2 Error Code: