Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/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 PostgresJSONB使用JPA检查JSON是否包含字符串_Postgresql_Hibernate_Jpa_Jsonb - Fatal编程技术网

Postgresql PostgresJSONB使用JPA检查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

我的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 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不受支持我别无选择