spring-boot - 新角色的 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
我的关联表中存在该角色。
解决方案
推荐阅读
- r - 使用 ggplot2 而不是 70 条绘制 10 个最高条
- visual-studio - 矩阵产品的 Fortran mex 文件:从不可分配到可分配
- python - ModuleNotFoundError: No module named ... 仅适用于某些包
- python - 如何在熊猫中对字符串中的数字进行排序?
- spring-boot - 我的 JEE 代码不处理“if”块,即使它是真的
- android - `when condition` 检查的自定义 lint 规则
- html - 使用 HTML 按除第一行的第一个字母以外的行/元素对列表进行排序
- cross-validation - 在 rasa nlu 中进行交叉验证时,有什么方法可以检查不正确的预测?
- python - 在pyqt中更改大小时FigureCanvas上的黑色边框
- javascript - 如何获得自动填充的输入值?