序数参数未绑定:@Query注释中的2

时间:2019-11-20 16:18:18

标签: hibernate jpa spring-data-jpa hql

尝试运行此查询时出现以下错误。

  

org.hibernate.QueryException:未绑定序数参数:2“,

@Query(value = "SELECT amu " +
                   "FROM Upgrade amu " +
                    "INNER JOIN FETCH amu.visibility v " +
                   " WHERE v IN ?2 " +
                    "AND amu.id= '?1' "         
   )
Optional<Upgrade> myFindMethod(final String uid, final String cid);

如果我将" WHERE v IN ?2 "更改为" WHERE v IN ?2 OR v IN ?1 ",则可以使用。我不知道为什么它不起作用。有想法吗?

注意:“可见性”是“升级”类中的Set<String>类型。

2 个答案:

答案 0 :(得分:6)

要添加到Jens的答案中:请注意空格

例如,这将引发错误:

"WHERE v IN ?2" + "AND amu.id= ?1 "

这将正常工作:

"WHERE v IN ?2 " + "AND amu.id= ?1 "

这是微小的差异,很容易忽略。

答案 1 :(得分:1)

问题是您在查询中仅声明了一个绑定参数,但实际上在该方法中具有两个参数。

这是因为在"AND amu.id= '?1' "中,由于用引号引起来,实际上看起来像绑定参数的是字符串文字。 如果希望将其作为绑定参数进行处理,请删除引号:"AND amu.id= ?1 "