JPA和JSON运算符本机查询

Gui*_*art 6 java postgresql json jpa hibernate-native-query

我正在尝试使此查询在JPA中起作用:

SELECT * FROM contrat WHERE contrat_json @> '{"nom" :"hever"}';
Run Code Online (Sandbox Code Playgroud)

它可以完美地工作,postgresql但是当我将其与JPA集成时,会出现以下错误:

该位置[1]的参数不存在

我的代码:

 @Transactional
 @Query(nativeQuery = true,value = "select p from Contrat p where contrat_json @> '{\"nom\":\":nom\"}'")
    public List<Contrat> findByNomRestrict(@Param("nom") String nom);
Run Code Online (Sandbox Code Playgroud)

我认为@>尽管进行了本地查询仍无法识别,您有想法吗?

col*_*ict 2

使用 PostgreSQL 和 JSON,您可能会遇到 needing?或其他奇怪的运算符,因此最好只使用它们的等效函数。psql您可以像这样在控制台中查找它们\doS+ @>

正如参数所示,您的查询不是本机的。

select p from Contrat p where...
Run Code Online (Sandbox Code Playgroud)

仅当它到达数据库时才会给您一个错误。

尝试类似的东西

@Query(nativeQuery = true, value = "select * from Contrat where jsonb_contains(contrat_json, :nom )")
Run Code Online (Sandbox Code Playgroud)

"{\"nom\":\"" + param + "\"}"作为参数绑定