Example usage for org.springframework.integration.jpa.support.parametersource ParameterSource getValue

List of usage examples for org.springframework.integration.jpa.support.parametersource ParameterSource getValue

Introduction

In this page you can find the example usage for org.springframework.integration.jpa.support.parametersource ParameterSource getValue.

Prototype

Object getValue(String paramName);

Source Link

Document

Return the parameter value for the requested named parameter.

Usage

From source file:org.springframework.integration.jpa.core.DefaultJpaOperations.java

/**
 * Given a JPQL query, this method gets all parameters defined in this query and
 * use the {@link ParameterSource} to find their values and set them.
 *
 *///from   w  ww  . java 2s  . c o m
private void setParametersIfRequired(String queryString, ParameterSource source, Query query) {
    Set<Parameter<?>> parameters = query.getParameters();

    if (parameters != null && !parameters.isEmpty()) {
        if (source != null) {
            for (Parameter<?> param : parameters) {
                String paramName = param.getName();
                Integer position = param.getPosition();

                final Object paramValue;

                if (position != null) {

                    if (source instanceof PositionSupportingParameterSource) {
                        paramValue = ((PositionSupportingParameterSource) source).getValueByPosition(position);
                        query.setParameter(position, paramValue);
                    } else {
                        throw new JpaOperationFailedException("Positional Parameters are only support "
                                + "for PositionSupportingParameterSources.", queryString);
                    }

                } else {

                    if (StringUtils.hasText(paramName)) {
                        paramValue = source.getValue(paramName);
                        query.setParameter(paramName, paramValue);
                    } else {
                        throw new JpaOperationFailedException(
                                "This parameter does not contain a parameter name. "
                                        + "Additionally it is not a positional parameter, neither.",
                                queryString);
                    }
                }

            }
        } else {
            throw new IllegalArgumentException("Query has parameters but no parameter source provided");
        }

    }
}