in cayenne/src/main/java/org/apache/cayenne/query/MappedSelect.java [184:287]
protected Query createReplacementQuery(EntityResolver resolver) {
QueryDescriptor descriptor = resolver.getQueryDescriptor(queryName);
Query query = super.createReplacementQuery(resolver);
QueryCacheStrategy cacheStrategyOverride = null;
if (forceNoCache) {
QueryCacheStrategy cacheStrategy = query.getMetaData(resolver).getCacheStrategy();
if (QueryCacheStrategy.LOCAL_CACHE == cacheStrategy) {
cacheStrategyOverride = QueryCacheStrategy.LOCAL_CACHE_REFRESH;
} else if (QueryCacheStrategy.SHARED_CACHE == cacheStrategy) {
cacheStrategyOverride = QueryCacheStrategy.SHARED_CACHE_REFRESH;
}
}
switch (descriptor.getType()) {
case QueryDescriptor.SELECT_QUERY:
ObjectSelect<?> selectQuery = (ObjectSelect<?>) query;
if (fetchLimit != null) {
selectQuery.limit(fetchLimit);
}
if (fetchOffset != null) {
selectQuery.offset(fetchOffset);
}
if (statementFetchSize != null) {
selectQuery.statementFetchSize(statementFetchSize);
}
if (pageSize != null) {
selectQuery.pageSize(pageSize);
}
if (cacheStrategyOverride != null) {
selectQuery.setCacheStrategy(cacheStrategyOverride);
}
break;
case QueryDescriptor.SQL_TEMPLATE:
SQLTemplate sqlTemplate = (SQLTemplate) query;
if (fetchLimit != null) {
sqlTemplate.setFetchLimit(fetchLimit);
}
if (fetchOffset != null) {
sqlTemplate.setFetchOffset(fetchOffset);
}
if (statementFetchSize != null) {
sqlTemplate.setStatementFetchSize(statementFetchSize);
}
if(queryTimeout != null) {
sqlTemplate.setQueryTimeout(queryTimeout);
}
if (pageSize != null) {
sqlTemplate.setPageSize(pageSize);
}
if (cacheStrategyOverride != null) {
sqlTemplate.setCacheStrategy(cacheStrategyOverride);
}
break;
case QueryDescriptor.EJBQL_QUERY:
EJBQLQuery ejbqlQuery = (EJBQLQuery) query;
if (fetchLimit != null) {
ejbqlQuery.setFetchLimit(fetchLimit);
}
if (fetchOffset != null) {
ejbqlQuery.setFetchOffset(fetchOffset);
}
if (statementFetchSize != null) {
ejbqlQuery.setStatementFetchSize(statementFetchSize);
}
if(queryTimeout != null) {
ejbqlQuery.setQueryTimeout(queryTimeout);
}
if (pageSize != null) {
ejbqlQuery.setPageSize(pageSize);
}
if (cacheStrategyOverride != null) {
ejbqlQuery.setCacheStrategy(cacheStrategyOverride);
}
break;
case QueryDescriptor.PROCEDURE_QUERY:
ProcedureQuery procedureQuery = (ProcedureQuery) query;
if (fetchLimit != null) {
procedureQuery.setFetchLimit(fetchLimit);
}
if (fetchOffset != null) {
procedureQuery.setFetchOffset(fetchOffset);
}
if (statementFetchSize != null) {
procedureQuery.setStatementFetchSize(statementFetchSize);
}
if(queryTimeout != null) {
procedureQuery.setQueryTimeout(queryTimeout);
}
if (pageSize != null) {
procedureQuery.setPageSize(pageSize);
}
if (cacheStrategyOverride != null) {
procedureQuery.setCacheStrategy(cacheStrategyOverride);
}
break;
default:
throw new CayenneRuntimeException("Unknown query type: %s", descriptor.getType());
}
return query;
}