的用法?在 jsonb 上的本机 SQL 查询中

inj*_*eer 7 java postgresql hibernate jpa jsonb

我需要针对 Postgres 列触发选择查询jsonb

entityManager.createNativeQuery(
 "select * from table where jsonbcol -> 'usernames' ? :un"
).setParameter("un", userName).getResultList()
Run Code Online (Sandbox Code Playgroud)

运行时抛出异常:

org.hibernate.engine.query.ParameterRecognitionException: Mixed parameter strategies - 
use just one of named, positional or JPA-ordinal strategy
Run Code Online (Sandbox Code Playgroud)

我尝试像\\?和 一样逃避??,但这没有帮助。

如何正确地进行该调用?

col*_*ict 8

正确的转义序列使查询如下所示:

entityManager.createNativeQuery(
 "select * from table where jsonbcol -> 'usernames' \\?\\? :un"
).setParameter("un", userName).getResultList()
Run Code Online (Sandbox Code Playgroud)

反斜杠转义了hibernate参数检测,两个问号是JDBC转义。