【问题标题】:java.lang.IllegalArgumentException: Unknown parameter position: 3java.lang.IllegalArgumentException:未知参数位置:3
【发布时间】:2019-01-24 05:49:42
【问题描述】:

jpa 原生查询

```科特林

@Query(value = 
  "SELECT \"members\".*FROM \"members\" WHERE team_id=?1 AND status=?2 
   ORDER BY CASE WHEN member_id=?3 THEN 0 ELSE 1 END,last_modified_At asc",
   countQuery = "SELECT count(*) FROM members where team_id = ?1 AND status =?2",
   nativeQuery = true)
fun findMembers(teamId: Long, status: Short, memberId: Long, pageable: Pageable?): Page<Member>

```

spring boot 启动时两个 sql 参数不完全相同会出现此错误。结果是对的,这个错误怎么解决?

【问题讨论】:

  • 能否请您发布整个堆栈跟踪
  • 这是“Spring Data JPA”,而不是 JPA API。供参考!并且 SQL 查询在“*”之后需要一个空格
  • 感谢您的建议,但您的回答不是这个问题的核心

标签: sql spring spring-data-jpa nativequery


【解决方案1】:

例如,为什么不使用 (@Param("teamId") Long teamId)?

然后,您只需输入 :teamId 而不是 ?1

【讨论】:

    【解决方案2】:

    问题是您的计数查询。它不使用?3 参数。

    如果您添加类似AND ?3 = ?3 的内容,它应该可以解决问题。

    但我不确定这是否是最好的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      相关资源
      最近更新 更多