in modules/spring-data-ext/spring-data/src/main/java/org/apache/ignite/springdata/repository/query/IgniteRepositoryQuery.java [263:311]
public IgniteRepositoryQuery(
RepositoryMetadata metadata,
@Nullable IgniteQuery staticQuery,
Method mtd,
ProjectionFactory factory,
IgniteCacheProxy<?, ?> cache,
@Nullable DynamicQueryConfig staticQueryConfiguration,
QueryMethodEvaluationContextProvider queryMethodEvaluationContextProvider) {
this.metadata = metadata;
this.mtd = mtd;
this.factory = factory;
type = metadata.getDomainType();
domainEntitiyFields = Arrays.stream(type.getDeclaredFields())
.collect(Collectors.toMap(field -> field.getName().toLowerCase(), field -> field));
this.cache = cache;
this.staticQueryConfiguration = staticQueryConfiguration;
this.staticQuery = staticQuery;
if (this.staticQuery != null)
staticReturnStgy = calcReturnType(mtd, this.staticQuery.isFieldQuery());
else
staticReturnStgy = null;
expressionParser = new SpelExpressionParser();
this.queryMethodEvaluationContextProvider = queryMethodEvaluationContextProvider;
qMethod = getQueryMethod();
// control projection
hasDynamicProjection = getQueryMethod().getParameters().hasDynamicProjection();
hasProjection = hasDynamicProjection || getQueryMethod().getResultProcessor().getReturnedType()
.isProjecting();
dynamicProjectionIndex = qMethod.getParameters().getDynamicProjectionIndex();
returnedDomainClass = getQueryMethod().getReturnedObjectType();
dynamicQueryConfigurationIndex = getDynamicQueryConfigurationIndex(qMethod);
// ensure dynamic query configuration param exists if dynamicQuery = true
if (dynamicQueryConfigurationIndex == -1 && this.staticQuery == null) {
throw new IllegalStateException(
"When passing dynamicQuery = true via org.apache.ignite.springdata.repository.config.Query "
+ "annotation, you must provide a non null method parameter of type DynamicQueryConfig");
}
}