@Override public String[] getNamedParameters() { return ArrayHelper.toStringArray( getParameterMetadata().getNamedParameterNames() ); }
public void verifyParametersBound(boolean reserveFirstParameter) { for ( QueryParameter<?> parameter : parameterMetadata.collectAllParameters() ) { // check the "normal" bindings if ( parameterBindingMap.containsKey( parameter ) ) { continue; } // next check the "list" bindings if ( parameterListBindingMap != null && parameterListBindingMap.containsKey( parameter ) ) { continue; } if ( parametersConvertedToListBindings != null && parametersConvertedToListBindings.contains( parameter ) ) { continue; } if ( parameter.getName() != null ) { throw new QueryException( "Named parameter not bound : " + parameter.getName() ); } else { throw new QueryException( "Ordinal parameter not bound : " + parameter.getPosition() ); } } }
@Override public Set<Parameter<?>> getParameters() { getProducer().checkOpen( false ); return getParameterMetadata().collectAllParametersJpa(); }
@Override public QueryParameter<?> getParameter(int position) { getProducer().checkOpen( false ); try { if ( getParameterMetadata().getPositionalParameterCount() == 0 ) { try { return getParameterMetadata().getQueryParameter( Integer.toString( position ) ); } catch (HibernateException e) { throw new QueryParameterException( "could not locate parameter at position [" + position + "]" ); } } // fallback to ordinal lookup return getParameterMetadata().getQueryParameter( position ); } catch (HibernateException e) { throw getExceptionConverter().convert( e ); } }
private QueryParameterBindingsImpl( SessionFactoryImplementor sessionFactory, ParameterMetadata parameterMetadata, boolean queryParametersValidationEnabled) { this.sessionFactory = sessionFactory; this.parameterMetadata = parameterMetadata; this.queryParametersValidationEnabled = queryParametersValidationEnabled; this.parameterBindingMap = CollectionHelper.concurrentMap( parameterMetadata.getParameterCount() ); this.jdbcStyleOrdinalCountBase = sessionFactory.getSessionFactoryOptions().jdbcStyleParamsZeroBased() ? 0 : 1; if ( parameterMetadata.hasPositionalParameters() ) { int smallestOrdinalParamLabel = Integer.MAX_VALUE; for ( QueryParameter queryParameter : parameterMetadata.getPositionalParameters() ) { if ( queryParameter.getPosition() == null ) { throw new HibernateException( "Non-ordinal parameter ended up in ordinal param list" ); } if ( queryParameter.getPosition() < smallestOrdinalParamLabel ) { smallestOrdinalParamLabel = queryParameter.getPosition(); } } ordinalParamValueOffset = smallestOrdinalParamLabel; } else { ordinalParamValueOffset = 0; } }
public void initialize(Serializable key, SharedSessionContractImplementor session) throws HibernateException { LOG.debugf( "Initializing collection: %s using named query: %s", persister.getRole(), queryName ); NativeQueryImplementor nativeQuery = session.getNamedNativeQuery( queryName ); if ( nativeQuery.getParameterMetadata().hasNamedParameters() ) { nativeQuery.setParameter( nativeQuery.getParameterMetadata().getNamedParameterNames().iterator().next(), key, persister.getKeyType() ); } else { nativeQuery.setParameter( 1, key, persister.getKeyType() ); } nativeQuery.setCollectionKey( key ).setFlushMode( FlushMode.MANUAL ).list(); } }
@SuppressWarnings("unchecked") public <T> QueryParameterBinding<T> getBinding(QueryParameter<T> parameter) { QueryParameterBinding<T> binding = parameterBindingMap.get( parameter ); if ( binding == null ) { if ( ! parameterMetadata.containsReference( parameter ) ) { throw new IllegalArgumentException( "Could not resolve QueryParameter reference [" + parameter + "] to QueryParameterBinding" ); } binding = makeBinding( parameter ); } return binding; }
@SuppressWarnings("WeakerAccess") protected QueryParameterBinding makeBinding(QueryParameter queryParameter) { assert ! parameterBindingMap.containsKey( queryParameter ); if ( ! parameterMetadata.containsReference( queryParameter ) ) { throw new IllegalArgumentException( "Cannot create binding for parameter reference [" + queryParameter + "] - reference is not a parameter of this query" ); } final QueryParameterBinding binding = makeBinding( queryParameter.getHibernateType() ); parameterBindingMap.put( queryParameter, binding ); return binding; }
Collection<String> params = query.getParameterMetadata().getNamedParameterNames(); if ( params.contains( REVISION_PARAMETER ) ) { query.setParameter( REVISION_PARAMETER, revision );
@Override public <T> T getParameterValue(Parameter<T> parameter) { LOGGER.tracef( "#getParameterValue(%s)", parameter ); getProducer().checkOpen( false ); if ( !getParameterMetadata().containsReference( (QueryParameter) parameter ) ) { throw new IllegalArgumentException( "Parameter reference [" + parameter + "] did not come from this query" ); } final QueryParameterBinding<T> binding = getQueryParameterBindings().getBinding( (QueryParameter<T>) parameter ); LOGGER.debugf( "Checking whether parameter reference [%s] is bound : %s", parameter, binding.isBound() ); if ( !binding.isBound() ) { throw new IllegalStateException( "Parameter value not yet bound : " + parameter.toString() ); } return binding.getBindValue(); }
Collection<String> params = query.getParameterMetadata().getNamedParameterNames(); if ( params.contains( REVISION_PARAMETER ) ) { query.setParameter( REVISION_PARAMETER, revision );
public final static void setQueryParameters(Query q, Map<String,Object> values) { if (values != null) { for (String sParam : q.getParameterMetadata().getNamedParameterNames()) { Object value = values.get(sParam); if (value == null) { q.setParameter(sParam, null); } else if (value instanceof Collection) { q.setParameterList(sParam, (Collection<?>) value); } else if (value instanceof Object[]) { q.setParameterList(sParam, (Object[]) value); } else { q.setParameter(sParam, value); } } } }
Collection<String> params = query.getParameterMetadata().getNamedParameterNames(); if ( params.contains( REVISION_PARAMETER ) ) { query.setParameter( REVISION_PARAMETER, revision );