小编Nic*_*oub的帖子

Spring JpaRepository如何转义问号(?)字符

Postgres定义了其他jsonb运算符,例如?|

但是,使用Spring JpaRepository查询构建器,总是将询问字符视为参数,并且我无法弄清楚如何对其进行转义(单个引号字符串中的字符除外,但随后查询无效)。

例:

@Query(value = "SELECT * FROM public.user u WHERE u.authorities ?| array['ROLE_1', 'ROLE_2']", nativeQuery = true)
Run Code Online (Sandbox Code Playgroud)

错误:

java.lang.IllegalArgumentException: Unable to resolve given parameter name [1] to QueryParameter reference
    at org.hibernate.query.internal.QueryParameterBindingsImpl.resolveQueryParameter(QueryParameterBindingsImpl.java:520)
    at org.hibernate.query.internal.QueryParameterBindingsImpl.getQueryParameterListBinding(QueryParameterBindingsImpl.java:498)
    at org.hibernate.query.internal.AbstractProducedQuery.setParameterList(AbstractProducedQuery.java:560)
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以逃脱它,或者可以使用其他包含?字符的postgres本机运算符的解决方案。

试图用?? |逃脱它。或\?| 目前无法正常运作。

注意:我也尝试使用自定义方言功能,但是它以相同的问题结束。

图书馆:

  • 冬眠5.2.16
  • 休眠JPA 2.1
  • spring-data-jpa 2.0.6.RELEASE
  • PostgreSQL 42.2.2

谢谢你们的回应!

postgresql spring-data-jpa jsonb

5
推荐指数
2
解决办法
1274
查看次数

标签 统计

jsonb ×1

postgresql ×1

spring-data-jpa ×1