当前位置: 首页 > 面试题库 >

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

宋嘉禧
2023-03-14
问题内容

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

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>Upgrade类中的类型。


问题答案:

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

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



 类似资料:
  • 我在使用IntelliJ IDEA 2020.2时启用了检查“@NotNull/@Nullable problems”。在编写自定义ThreadFactory时,我在的参数上收到IntelliJ IDEA检查警告“Not annotated parameter overrides@NotNull parameter”: 爪哇。util。同时发生的ThreadFactory接口不注释。IDEA的代码

  • 参数绑定是把当前请求的变量作为操作方法(也包括架构方法)的参数直接传入,参数绑定并不区分请求类型。 参数绑定传入的值会经过全局过滤,如果你有额外的过滤需求可以在操作方法中单独处理。 按名称绑定 参数绑定方式默认是按照变量名进行绑定,例如,我们给Blog控制器定义了两个操作方法read和archive方法,由于read操作需要指定一个id参数,archive方法需要指定年份(year)和月份(mon

  • 问题内容: 我有一个功能可以做到这一点: 哪个发送到我的数据库类,它执行以下操作: 问题是这不起作用。 我希望做的是获取列表,并在后面列出它们,以使查询类似于: 但是很明显,我走错了路。 有没有办法使数组…按原样转换为要在查询阶段打印出来的列表? 问题答案: call_user_func_array “使用参数数组调用回调” 应该做的工作 更新 :您还必须更改您的params数组: 如预期的那样,

  • 问题内容: 今天,我遇到了一个以前从未见过的错误(在PDO中),但是当您考虑一下时,它是显而易见的。 我收到以下错误: 我使用的查询类似于以下内容: 显然,我有更多的参数和更长的查询。 为什么会给我这个错误? 问题答案: 解决方案是显而易见的:PDO不理会注释,而是尝试绑定不存在的变量’:Z’。您不能在PDO的注释中使用参数(除非您绑定它们)。 在注释中使用问号也存在类似的错误。

  • 因为我们可以用它的实现绑定一个类型。 如果我们想要映射具有多个实现的类型,我们也可以创建自定义注释。 请参阅以下示例以了解该概念。 创建绑定注释 @BindingAnnotation @Target({ FIELD, PARAMETER, METHOD }) @Retention(RUNTIME) @interface WinWord {} @BindingAnnotation - 将注释标记为

  • 我在想一个一般的请求映射问题。在不选择任何特定MVC框架的情况下,将基于注释的请求映射与简单的参数检查器映射进行比较,哪一个更好? 假设我想创建一个web服务,它应该处理例如“添加”和“删除”操作。 使用注释,它看起来像这样: 使用参数,它将如下所示: 在第二个示例中,假设Operation对象是从JSON对象构建的。我们的想法是,我们只有一个通用的操作,它有一个类型参数,我们总是调用相同的请求(