Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 如何在@Query中使用“?”?如何在spring boot中使用postgres的Jsonb?_Postgresql_Spring Boot - Fatal编程技术网

Postgresql 如何在@Query中使用“?”?如何在spring boot中使用postgres的Jsonb?

Postgresql 如何在@Query中使用“?”?如何在spring boot中使用postgres的Jsonb?,postgresql,spring-boot,Postgresql,Spring Boot,如何在spring存储库的postgres查询中使用?|运算符?我需要在查询文本类型列时使用where,该列包含json @Query(value = "SELECT * \n" + "FROM tbl t \n" + "WHERE t.some_ids::::jsonb ?| array['152960','188775']", nativeQuery = true ) List<Model> getModelsByIds(); 但

如何在spring存储库的postgres查询中使用?|运算符?我需要在查询文本类型列时使用where,该列包含json

@Query(value =
        "SELECT * \n" +
        "FROM tbl t \n" +
        "WHERE t.some_ids::::jsonb ?| array['152960','188775']", nativeQuery = true
)
List<Model> getModelsByIds();
但这不起作用,我发现了下一个例外:
org.springframework.dao.InvalidDataAccessApiUsageException:至少提供了1个参数,但查询中仅存在0个参数。

您可以使用该运算符的关联函数。大多数情况下,混淆层也会阻塞::cast操作符,因此您可能希望改用cast:

但是,我认为这将无法使用在某些_id::jsonb上定义的索引

您没有提到某些_id的内容到底是什么样子的

如果这是一个JSON数组,例如“[123456]”:jsonb,那么您还可以使用contains操作符@>:

如果JSON数组包含数字而不是字符串“[123456]”,则还需要在参数中传递数字:

WHERE cast(t.some_ids as jsonb) @> '[152960,188775]'

事实上,混淆层确实很难充分利用PostgresThank you的潜力。这就是我需要的。你解释得很好。和你能告诉我如何在@Query中以param的形式传递数组吗?Tkanks,我使用字符串\u to \u array:ids,,'解析了它。
WHERE cast(t.some_ids as jsonb) @> '["152960","188775"]'
WHERE cast(t.some_ids as jsonb) @> '[152960,188775]'