Postgresql 如何在@Query中使用“?”?如何在spring boot中使用postgres的Jsonb?
如何在spring存储库的postgres查询中使用?|运算符?我需要在查询文本类型列时使用where,该列包含jsonPostgresql 如何在@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(); 但
@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]'