当前位置: 首页 > 知识库问答 >
问题:

Spring SQL-参数映射(数组)

呼延明朗
2023-03-14

我想在sql语句中使用一个名为tags的参数:

SELECT * FROM reply WHERE array[:tags] @> array[2293,2294];

我通过以下方式传递参数并执行语句:

MapSqlParameterSource params = new MapSqlParameterSource();
Integer[] a={2293,2294};
params.addValue("tags", Arrays.asList(a));
namedParameterJdbcTemplate.queryForObject(statement, params, String.class);
SELECT * FROM reply WHERE '{:tags}' @> array[2293,2294];

如果我将语句更改为:

SELECT * FROM reply WHERE (:tags) @> array[2293,2294];

它抛出错误:

类org.springframework.jdbc.badsqlgrammareXception PreparedStatementCallback;错误的SQL语法[SELECT*FROM reply WHERE(?,?)@>array[2293,2294];嵌套异常是org.PostgreSQL L.util.psqlException:错误:运算符不存在:记录@>Integer[]提示:没有运算符与给定的名称和参数类型匹配。您可能需要添加显式类型转换。位置:81

共有1个答案

司徒隐水
2023-03-14

从:标签中分离括号可以解决问题:

SELECT * FROM reply WHERE array[ :tags ] @> array[2293,2294];
 类似资料:
  • 所以我试图建立一个简单的网站,这样工作。 我在这里怎么办?而不是扩展另一个HTTPServlett 谢谢你抽出时间

  • 我正在结合Lombok和构建器模式使用MapSTRt。我有一个问题,即MapSTRt正在对生成的映射器函数中的所有参数进行显式空检查,并在所有参数为空的情况下提前退出,例如: 我想实现MapStruct不实现完整的空检查。即使所有参数都为null,它也应该设置整个生成器,并在生成器进行null检查(如果有)时调用build。

  • 问题 你有一个对象数组,想把这些对象映射到另一个数组中,就像 Ruby 的映射一样。 解决方案 使用 map() 和匿名函数,但不要忘了还有列表推导。 electric_mayhem = [ { name: "Doctor Teeth", instrument: "piano" }, { name: "Janice", instrument: "lead g

  • 流接口中的映射函数定义如下: 函数参数列表与函数接口自己的规范一致 方法是 这意味着它需要一个T,但返回一个R。但我正在运行这个代码 奇怪的是,为什么它能工作,但论点类型似乎不匹配?没有简单的方法来解释它,但我的理解是,一个函数应该接受类型T的输入并返回类型R。当它在流中使用时,它接受类型String的输入并返回类型int(即String.length())。但是小溪。map被键入以返回与流相同的

  • 我对流图法有点困惑。有一些简单的源代码可以运行: map()签名:Stream map(函数 在我的选择中,我认为赋予文字的功能。stream()。map应该有1个参数,但是string::length没有任何输入参数,只返回int。 它看起来像word流调用字符串中的每个元素“word”。长度(),但我不知道该怎么做?为什么string::length签名不需要与函数签名(R apply(T))

  • 我对使用mybatis作为ORM工具相当满意。但是我不能理解MyBatis中参数映射是如何工作的。 假设我定义了一个mybatis映射器接口,该接口有一个获取用户详细信息的方法。 我定义了我的类,其中包含select。