为了账号安全,请及时绑定邮箱和手机立即绑定

SPRING|Java - 在查询中使用带有 SpEl 的 IN 子句

SPRING|Java - 在查询中使用带有 SpEl 的 IN 子句

炎炎设计 2023-04-26 17:05:07
我有一个枚举 (ClubRole),它有一个方法从这个枚举返回值的集合。我尝试使用 SpEl 从查询内部调用此方法。 @Query("select m from ClubMember m " +    "where m.student = :student " +    "and m.role in :#{#role.getParents()}"  )  List<ClubMember> findByRoleWithInheritance(@Param("student") Student student, @Param("role") ClubRole role);这通过了构建,并且应用程序运行但是当调用此方法时我得到``没有找到名称角色的参数绑定!; 嵌套的异常是 java.lang.IllegalArgumentException:找不到名称角色的参数绑定!我尝试了不同的方法,但都没有用。我想知道在这种情况下是否可以使用 SpEl,如果可以,如何使用?
查看完整描述

1 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

看起来这是 spring-data-jpa 中的一个问题。我可以看到人们在 spring-blog 上讨论同样的问题。不确定是否存在未解决的问题。您可以尝试以下作为解决方法。


@Query("select m from ClubMember m " +

    "where m.student = :#{#student}" +

    "and m.role in :#{#role.getParents()}"

  )

  List<ClubMember> findByRoleWithInheritance(@Param("student") Student student, @Param("role") ClubRole role);

或者您可以尝试对第二个参数进行索引访问,例如#{[1].getParents()}


这可能会有所帮助。


查看完整回答
反对 回复 2023-04-26
  • 1 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信