首页 > 解决方案 > 新角色的 Spring Data JPA 的 @Query 中的 Spring Security SpEL 错误:未绑定序数参数:3

问题描述

工作正常的原始查询:

 String authorizeQuery = " and e.id in (select emp.id from Employee emp, Employee loggedIn where " +
            " 1 = ?#{hasAuthority('ADMIN') ? 1: 0} or 1 = ?#{hasAuthority('OPERATOR') ? 1: 0} or (loggedIn.oauthUser.id = ?#{principal.id} " +
            " and loggedIn.id in (emp.id, emp.lead.id, emp.team.leader.id)))";

我尝试添加另一个角色:SUPER_ADMIN在身份验证中,如下所示:

String authorizeQuery = " and e.id in (select emp.id from Employee emp, Employee loggedIn where " +
            " 1 = ?#{hasAuthority('ADMIN') ? 1: 0} or 1 = ?#{hasAuthority('OPERATOR') ? 1: 0} or 1 = ?#{hasAuthority('SUPER_ADMIN') ? 1: 0} or (loggedIn.oauthUser.id = ?#{principal.id} " +
            " and loggedIn.id in (emp.id, emp.lead.id, emp.team.leader.id)))";

authorizedQuery在这里使用:

@Query("select e from MyModel e " +
          " where " +
          " e.isActive=1 and "+
          " (:fieldOne is null or e.fieldOne = :fieldOne) and " +
          " (:fieldTwo is null or e.fieldTwo= :fieldTwo) " + authorizeQuery)
   Page<MyModel> searchAllMyModel(@Param("fieldOne") String fieldOne,
                                    @Param("fieldTwo") String fieldTwo, Pageable pageRequest);

当我请求进行此更改时,我收到此错误:

org.springframework.dao.InvalidDataAccessResourceUsageException:序数参数未绑定:3;嵌套异常是 org.hibernate.QueryException:序数参数未绑定:3

我的关联表中存在该角色。

标签: spring-bootspring-securityspring-data-jpa

解决方案


推荐阅读