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本机运算符的解决方案。
试图用?? |逃脱它。或\?| 目前无法正常运作。
注意:我也尝试使用自定义方言功能,但是它以相同的问题结束。
图书馆:
谢谢你们的回应!