Postgresql PostgresJSONB使用JPA检查JSON是否包含字符串
我的posgtgres表中有一个jsonb列,json的结构是:{'alias':[“name1”,“name2”,“name”…]} 我编写了Postgres查询来检查JSON对象中的数组是否包含名称Postgresql PostgresJSONB使用JPA检查JSON是否包含字符串,postgresql,hibernate,jpa,jsonb,Postgresql,Hibernate,Jpa,Jsonb,我的posgtgres表中有一个jsonb列,json的结构是:{'alias':[“name1”,“name2”,“name”…]} 我编写了Postgres查询来检查JSON对象中的数组是否包含名称 select * from public.table t where json_col->'alias' ? 'name' 这对pgAdmin有效 但这在JPA中不起作用 我的代码 @Query(value = "select * from public.table t whe
select * from public.table t where json_col->'alias' ? 'name'
这对pgAdmin有效
但这在JPA中不起作用
我的代码
@Query(value = "select * from public.table t where json_col->'alias' ? :name" ,nativeQuery = true)
Table findUsingName(@Param("name") String name);
这会抛出一个错误:“混合?不支持参数和其他形式,如?1!'
我知道这个错误是由事实造成的?JPA使用的也是不同的意思
在JPA查询中,有人能帮我吗?我不知道
?
操作符是做什么的,但是你应该使用该操作符的命名变量,因为?
在JDBC中用于定义参数。找到了“?”的postgres函数,即jsonb\u exists\u any(公司别名->'alias',数组[:name])试试
。我认为JDBC驱动程序会检测到这是一个“转义”?
运算符。使用该函数的缺点是,如果出于性能原因需要索引,它就无法使用索引。我尝试过??但这是一个错误:'混合?参数和其他形式,如?1不受支持我别无选择