/** * INTERNAL: * Used in SQL printing. */ @Override public void writeSubexpressionsTo(BufferedWriter writer, int indent) throws IOException { if (getSubQuery().getSelectionCriteria() != null) { getSubQuery().getSelectionCriteria().toString(writer, indent); } }
/** * INTERNAL: * Used in SQL printing. */ @Override public void writeSubexpressionsTo(BufferedWriter writer, int indent) throws IOException { if (getSubQuery().getSelectionCriteria() != null) { getSubQuery().getSelectionCriteria().toString(writer, indent); } }
/** * INTERNAL: * Used in SQL printing. */ public void writeSubexpressionsTo(BufferedWriter writer, int indent) throws IOException { if (getSubQuery().getSelectionCriteria() != null) { getSubQuery().getSelectionCriteria().toString(writer, indent); } } }
/** */ public ReportQuery getReportQuery(GenerationContext context) { ReportQuery innerQuery = new ReportQuery(); GenerationContext innerContext = subqueryParseTree.populateSubquery(innerQuery, context); Expression joins = innerContext.joinVariables(outerVars); if (joins != null) { Expression where = innerQuery.getSelectionCriteria(); where = appendExpression(where, joins); innerQuery.setSelectionCriteria(where); } return innerQuery; }
/** */ public ReportQuery getReportQuery(GenerationContext context) { ReportQuery innerQuery = new ReportQuery(); GenerationContext innerContext = subqueryParseTree.populateSubquery(innerQuery, context); Expression joins = innerContext.joinVariables(outerVars); if (joins != null) { Expression where = innerQuery.getSelectionCriteria(); where = appendExpression(where, joins); innerQuery.setSelectionCriteria(where); } return innerQuery; }
/** */ public ReportQuery getReportQuery(GenerationContext context) { ReportQuery innerQuery = new ReportQuery(); GenerationContext innerContext = subqueryParseTree.populateSubquery(innerQuery, context); Expression joins = innerContext.joinVariables(outerVars); if (joins != null) { Expression where = innerQuery.getSelectionCriteria(); where = appendExpression(where, joins); innerQuery.setSelectionCriteria(where); } return innerQuery; }
protected org.eclipse.persistence.expressions.Expression internalCorrelate(FromImpl from){ org.eclipse.persistence.expressions.Expression expression = ((InternalSelection)from).getCurrentNode(); ExpressionBuilder builder = new ExpressionBuilder(expression.getBuilder().getQueryClass()); org.eclipse.persistence.expressions.Expression correlated = expression.rebuildOn(builder); expression = expression.equal(correlated); this.correlations.add(expression); org.eclipse.persistence.expressions.Expression selectionCriteria = expression.and(this.subQuery.getSelectionCriteria()); this.subQuery.setSelectionCriteria(selectionCriteria); return correlated; }
/** * INTERNAL: * For iterating using an inner class */ public void iterateOn(ExpressionIterator iterator) { super.iterateOn(iterator); if (baseExpression != null) { baseExpression.iterateOn(iterator); } // For Flashback: It is now possible to create iterators that will span // the entire expression, even the where clause embedded in a subQuery. if (iterator.shouldIterateOverSubSelects()) { if (getSubQuery().getSelectionCriteria() != null) { getSubQuery().getSelectionCriteria().iterateOn(iterator); } else { getSubQuery().getExpressionBuilder().iterateOn(iterator); } } }
/** * INTERNAL: * For iterating using an inner class */ @Override public void iterateOn(ExpressionIterator iterator) { super.iterateOn(iterator); if (baseExpression != null) { baseExpression.iterateOn(iterator); } // For Flashback: It is now possible to create iterators that will span // the entire expression, even the where clause embedded in a subQuery. if (iterator.shouldIterateOverSubSelects()) { if (getSubQuery().getSelectionCriteria() != null) { getSubQuery().getSelectionCriteria().iterateOn(iterator); } else { getSubQuery().getExpressionBuilder().iterateOn(iterator); } } }
/** * INTERNAL: * For iterating using an inner class */ @Override public void iterateOn(ExpressionIterator iterator) { super.iterateOn(iterator); if (baseExpression != null) { baseExpression.iterateOn(iterator); } // For Flashback: It is now possible to create iterators that will span // the entire expression, even the where clause embedded in a subQuery. if (iterator.shouldIterateOverSubSelects()) { if (getSubQuery().getSelectionCriteria() != null) { getSubQuery().getSelectionCriteria().iterateOn(iterator); } else { getSubQuery().getExpressionBuilder().iterateOn(iterator); } } }
/** * The query must be cloned, and the sub-expression must be cloned using the same outer expression identity. */ protected void postCopyIn(Map alreadyDone) { super.postCopyIn(alreadyDone); ReportQuery clonedQuery = (ReportQuery)getSubQuery().clone(); if (!clonedQuery.isCallQuery()) { if (clonedQuery.getSelectionCriteria() != null) { clonedQuery.setSelectionCriteria(getSubQuery().getSelectionCriteria().copiedVersionFrom(alreadyDone)); // ensure the builder for the subquery is the same as the builder for the subquery's expression // for certain Subqueries (for instance batch queries for direct collections), when we get to this // point the builder for the clonedQuery will already be aliased. Replacing the builder with // the builder for the query's new expression solves this issue. if (clonedQuery.getExpressionBuilder() != null) { clonedQuery.setExpressionBuilder(clonedQuery.getSelectionCriteria().getBuilder()); } } else if (clonedQuery.getExpressionBuilder() != null) { // Must clone the expression builder. clonedQuery.setExpressionBuilder((ExpressionBuilder)clonedQuery.getExpressionBuilder().copiedVersionFrom(alreadyDone)); } // Must also clone report items. clonedQuery.copyReportItems(alreadyDone); } setSubQuery(clonedQuery); }
if (reportQuery.getSelectionCriteria() != null) { reportQuery.setSelectionCriteria(reportQuery.getSelectionCriteria().twistedForBaseAndContext(newBase, getBuilder(), getBaseExpression()));
private void appendJoinVariables(org.eclipse.persistence.jpa.jpql.parser.Expression expression, ReportQuery subquery) { queryExpression = null; for (String variableName : collectOuterIdentificationVariables()) { Expression innerExpression = queryContext.getQueryExpression(variableName); Expression outerExpression = queryContext.getParent().getQueryExpressionImp(variableName); Expression equalExpression = innerExpression.equal(outerExpression); if (queryExpression == null) { queryExpression = equalExpression; } else { queryExpression = queryExpression.and(equalExpression); } } // Aggregate the WHERE clause with the joins expression if (queryExpression != null) { Expression whereClause = subquery.getSelectionCriteria(); if (whereClause != null) { whereClause = whereClause.and(queryExpression); } else { whereClause = queryExpression; } subquery.setSelectionCriteria(whereClause); } }
private void appendJoinVariables(org.eclipse.persistence.jpa.jpql.parser.Expression expression, ReportQuery subquery) { queryExpression = null; for (String variableName : collectOuterIdentificationVariables()) { Expression innerExpression = queryContext.getQueryExpression(variableName); Expression outerExpression = queryContext.getParent().getQueryExpressionImp(variableName); Expression equalExpression = innerExpression.equal(outerExpression); if (queryExpression == null) { queryExpression = equalExpression; } else { queryExpression = queryExpression.and(equalExpression); } } // Aggregate the WHERE clause with the joins expression if (queryExpression != null) { Expression whereClause = subquery.getSelectionCriteria(); if (whereClause != null) { whereClause = whereClause.and(queryExpression); } else { whereClause = queryExpression; } subquery.setSelectionCriteria(whereClause); } }
if (getSubQuery().getSelectionCriteria() != null) { reportQuery.setSelectionCriteria(getSubQuery().getSelectionCriteria().twistedForBaseAndContext(newBase, context, getBaseExpression()));
if (getSubQuery().getSelectionCriteria() != null) { reportQuery.setSelectionCriteria(getSubQuery().getSelectionCriteria().twistedForBaseAndContext(newBase, context, getBaseExpression()));
/** * The query must be cloned, and the sub-expression must be cloned using the same outer expression identity. */ @Override protected void postCopyIn(Map alreadyDone) { initializeCountSubQuery(); super.postCopyIn(alreadyDone); ReportQuery clonedQuery = (ReportQuery)getSubQuery().clone(); if (!clonedQuery.isCallQuery()) { if (clonedQuery.getSelectionCriteria() != null) { clonedQuery.setSelectionCriteria(getSubQuery().getSelectionCriteria().copiedVersionFrom(alreadyDone)); // ensure the builder for the subquery is the same as the builder for the subquery's expression // for certain Subqueries (for instance batch queries for direct collections), when we get to this // point the builder for the clonedQuery will already be aliased. Replacing the builder with // the builder for the query's new expression solves this issue. if (clonedQuery.getExpressionBuilder() != null) { clonedQuery.setExpressionBuilder((ExpressionBuilder)clonedQuery.getExpressionBuilder().copiedVersionFrom(alreadyDone)); } } else if (clonedQuery.getExpressionBuilder() != null) { // Must clone the expression builder. clonedQuery.setExpressionBuilder((ExpressionBuilder)clonedQuery.getExpressionBuilder().copiedVersionFrom(alreadyDone)); } // Must also clone report items, group by, having, order by. clonedQuery.copyReportItems(alreadyDone); } setSubQuery(clonedQuery); }
/** * The query must be cloned, and the sub-expression must be cloned using the same outer expression identity. */ @Override protected void postCopyIn(Map alreadyDone) { initializeCountSubQuery(); super.postCopyIn(alreadyDone); ReportQuery clonedQuery = (ReportQuery)getSubQuery().clone(); if (!clonedQuery.isCallQuery()) { if (clonedQuery.getSelectionCriteria() != null) { clonedQuery.setSelectionCriteria(getSubQuery().getSelectionCriteria().copiedVersionFrom(alreadyDone)); // ensure the builder for the subquery is the same as the builder for the subquery's expression // for certain Subqueries (for instance batch queries for direct collections), when we get to this // point the builder for the clonedQuery will already be aliased. Replacing the builder with // the builder for the query's new expression solves this issue. if (clonedQuery.getExpressionBuilder() != null) { clonedQuery.setExpressionBuilder((ExpressionBuilder)clonedQuery.getExpressionBuilder().copiedVersionFrom(alreadyDone)); } } else if (clonedQuery.getExpressionBuilder() != null) { // Must clone the expression builder. clonedQuery.setExpressionBuilder((ExpressionBuilder)clonedQuery.getExpressionBuilder().copiedVersionFrom(alreadyDone)); } // Must also clone report items, group by, having, order by. clonedQuery.copyReportItems(alreadyDone); } setSubQuery(clonedQuery); }
Expression criteria = subQuery.getSelectionCriteria();
Expression criteria = subQuery.getSelectionCriteria();