java.lang.IllegalArgumentException:未知参数位置:3

时间:2018-08-17 08:16:23

标签: sql spring spring-data-jpa nativequery

jpa nativeQuery

```kotlin

@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启动时,两个sql参数并不完全相同,但出现此错误。结果是正确的。如何解决此错误?

2 个答案:

答案 0 :(得分:0)

为什么不使用(@Param(“ teamId”)Long teamId)作为示例?

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

答案 1 :(得分:0)

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

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

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