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

Spring Data本机查询不允许Postgres jsonb字符串存在运算符(问号)

郗缪文
2023-03-14
问题内容

我正在尝试在SpringData本机查询中使用Postgres jsonb字符串存在运算符。

SpringData方法示例

@Query(value = "SELECT t.id \n"
        + " FROM task AS t \n"
        + " WHERE (t.worker_ids \\? :workerId)\n"
        + " ORDER BY t.created_at\n",
        nativeQuery = true)
Optional<String> findMatchingTaskId(@Param("workerId") String workerId);

worker_ids数据库中,哪里是JSOB类型。我试图用排除问号,\\但仍然出现以下错误:
org.postgresql.util.PSQLException: No value specified for parameter 2.

有没有办法将此操作符与spring数据本机查询一起使用?


问题答案:

PostgreSQL中的所有运算符都使用基础过程:

> SELECT oprname, oprcode FROM pg_operator WHERE oprname LIKE '%?%'

oprname | oprcode
--------------------------
?       | jsonb_exists
?|      | jsonb_exists_any
?&      | jsonb_exists_all
...

因此,您可以使用以下方式重写查询jsonb_exists(jsonb, text)

SELECT t.id
FROM task AS t
WHERE jsonb_exists(t.worker_ids, :workerId)
ORDER BY t.created_at


 类似资料:
  • 我们在代码中创建查询,方法是在查询的语法中连接字符串,就像创建一个节点一样,查询中的所有属性都是在运行时添加的。 查询在代码中如下所示,其中 节点标签=字符串 properties = JSONObject 执行查询创建时出错因为它不允许在java代码中的查询中使用撇号(')。 在neo4j浏览器上执行相同的查询,但在尝试代码时没有执行相同的查询。 如何解决这个问题并允许同样的情况。 问题2 :-

  • 我正在使用拆分一个字符串。我收到的字符串有这样的结构: 其中<代码> 除非是空字符串,否则这可以正常工作。在这种情况下,只会跳过数据。 我想要一个字符串,如<代码>[数据] 我该怎么做?

  • 我需要使用JParePository执行以下操作: 我目前这样做:

  • 目标 了解实例化 String 对象和设置其值的多种方法 了解字符串串联和方法链 熟悉 Java 语言的算术运算符 字符串 目前为止,您已经遇到过多种类型的 String。在 Java 语言中,字符串是 String 类型的一级对象,包含可帮助您处理它们的方法。 在 C 语言中,处理字符串需要大量精力,因为它们是您必须操作的 8 位字符组成的以 null 结尾的数组。(在字符串方面,与 C 语言最

  • 我有一个站点,需要在重定向时保留查询字符串中的page参数。Wordpress条带出页。我无法更改参数名称,因为我无法控制的脚本依赖于该名称。有没有一种方法可以阻止wordpress从URL中过滤/剥离该参数。

  • 问题内容: 我在这里的研究中得到了不同的答案。 有人可以验证Redis服务器只能存储任何数值的表示吗? 例如,如果我在lpush中使用具有双重类型的Java客户端(Jedis),在发送给Redis之前是否需要将其转换为等效于字符串类型的内容? 还是有一种方法可以发送诸如double之类的实际数字类型?如果是这样,是否有任何示例代码说明了如何实现此目的? 谢谢 问题答案: Redis将所有内容存储在