Ali*_*nik 1 postgresql hibernate spring-data
我正在尝试在 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);
Run Code Online (Sandbox Code Playgroud)
哪里worker_ids是数据库类型JSOB的。我试图排除问号,\\但仍然出现以下错误:
org.postgresql.util.PSQLException: No value specified for parameter 2.
有没有办法将此运算符与 spring 数据本机查询一起使用?
小智 5
PostgreSQL 中的所有操作符都使用底层过程:
> SELECT oprname, oprcode FROM pg_operator WHERE oprname LIKE '%?%'
oprname | oprcode
--------------------------
? | jsonb_exists
?| | jsonb_exists_any
?& | jsonb_exists_all
...
Run Code Online (Sandbox Code Playgroud)
所以你可以jsonb_exists(jsonb, text)像这样重写你的查询:
SELECT t.id
FROM task AS t
WHERE jsonb_exists(t.worker_ids, :workerId)
ORDER BY t.created_at
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
325 次 |
| 最近记录: |