4

Project settings are: Java 8, Hibernate 5.3.1, Oracle 18c

Getting the following error when executing queries with named or ordinal parameters. Happens only if the parameters are inside a function

select * from TABLE_PRIVILEGE a where ( ( json_exists(a.DATA,'$?(@.businessId in :businessId)')) and ( a.DATA."resource" = :resource ) and ( json_exists(a.DATA,'$?(@.actions in :actions)')) )

When trying to set any of the parameters used in the function

Query#setParameter("businessId", value);

an exception is thrown

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)

Same if in the native query we are using ordinal parameters

select * from TABLE_PRIVILEGE a where ( ( json_exists(a.DATA,'$?(@.businessId in ?1)')) and ( a.DATA.resource = ?2 ) and ( json_exists(a.DATA,'$?(@.actions in ?3)')) )

java.lang.IllegalArgumentException: Could not locate ordinal parameter [1], expecting one of [2]
      at org.hibernate.query.internal.ParameterMetadataImpl.getOrdinalParameterDescriptor(ParameterMetadataImpl.java:143)
      at org.hibernate.query.internal.ParameterMetadataImpl.getQueryParameter(ParameterMetadataImpl.java:193)
      at org.hibernate.query.internal.AbstractProducedQuery.setParameter(AbstractProducedQuery.java:509)
      at org.hibernate.query.internal.NativeQueryImpl.setParameter(NativeQueryImpl.java:608)
      at org.hibernate.query.internal.NativeQueryImpl.setParameter(NativeQueryImpl.java:57)
Anca T.
  • 41
  • 4

0 Answers0