| We cannot set parameter in a Query object, if the parameter is inside a string. Query query = entityManager.createNativeQuery("select * from PRIVILEGE a where ( ( json_exists(a.DATA,'$?(@.businessId in :businessId)')) and ( a.DATA.\"resource\" = :resource ) and ( json_exists(a.DATA,'$?(@.actions in :actions)')) )", entityClass); query.setParameter("businessId", Arrays.asList("ID1", "ID2")); java.lang.IllegalArgumentException: Could not locate named parameter [businessId], expecting one of [resource] at org.hibernate.query.internal.ParameterMetadataImpl.getNamedParameterDescriptor(ParameterMetadataImpl.java:218) at org.hibernate.query.internal.ParameterMetadataImpl.getQueryParameter(ParameterMetadataImpl.java:187) at org.hibernate.query.internal.QueryParameterBindingsImpl.resolveQueryParameter(QueryParameterBindingsImpl.java:460) at org.hibernate.query.internal.QueryParameterBindingsImpl.getQueryParameterListBinding(QueryParameterBindingsImpl.java:450) at org.hibernate.query.internal.AbstractProducedQuery.setParameterList(AbstractProducedQuery.java:568) at org.hibernate.query.internal.NativeQueryImpl.setParameterList(NativeQueryImpl.java:731) at org.hibernate.query.internal.NativeQueryImpl.setParameterList(NativeQueryImpl.java:59) at org.hibernate.query.internal.AbstractProducedQuery.setParameter(AbstractProducedQuery.java:490) at org.hibernate.query.internal.NativeQueryImpl.setParameter(NativeQueryImpl.java:604) at org.hibernate.query.internal.NativeQueryImpl.setParameter(NativeQueryImpl.java:59) https://stackoverflow.com/questions/55046066/cant-set-named-or-ordinal-parameters-in-sql-if-inside-a-string Tested with hibernate 5.3.1 and 5.3.9 and same issue |