private Value getSubquery(JPQLNode node) { final boolean subclasses = true; String alias = nextAlias(); // parse the subquery ParsedJPQL parsed = new ParsedJPQL(node.parser.jpql, node); ClassMetaData candidate = getCandidateMetaData(node); Subquery subq = factory.newSubquery(candidate, subclasses, alias); subq.setMetaData(candidate); contexts.push(new Context(parsed, subq)); try { QueryExpressions subexp = getQueryExpressions(); subq.setQueryExpressions(subexp); return subq; } finally { // remove the subquery parse context contexts.pop(); } }
public void setSubquery(Subquery subquery) { this.subquery = subquery; this.select = subquery.getSelect(); parent.addSubselContext(this); }
/** * Convert this path to a kernel path (value). */ @Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> c) { org.apache.openjpa.kernel.exps.Path path = null; SubqueryImpl<?> subquery = c.getDelegator(); PathImpl<?,?> parent = getInnermostParentPath(); Value var = c.getRegisteredVariable(this); if (var != null) { path = factory.newPath(var); } else if (parent.inSubquery(subquery)) { org.apache.openjpa.kernel.exps.Subquery subQ = subquery.getSubQ(); path = factory.newPath(subQ); path.setMetaData(subQ.getMetaData()); path.setSchemaAlias(c.getAlias(this)); } else { path = (org.apache.openjpa.kernel.exps.Path) _parent.toValue(factory, c); path.get(_member.fmd, allowNull); } return path; }
private Expression getSubquery(String alias, Path path, Expression exp) { Value var = getVariable(alias, true); // this bind is for validateMapPath to resolve alias Expression bindVar = factory.bindVariable(var, path); FieldMetaData fmd = path.last(); ClassMetaData candidate = getFieldType(fmd); if (candidate == null && fmd.isElementCollection()) candidate = fmd.getDefiningMetaData(); setCandidate(candidate, alias); Context subContext = ctx(); Subquery subquery = ctx().getSubquery(); if (subquery == null){ subquery = factory.newSubquery(candidate, true, alias); subContext.setSubquery(subquery); } else { subquery.setSubqAlias(alias); } Path subpath = factory.newPath(subquery); subpath.setSchemaAlias(path.getCorrelationVar()); subpath.setMetaData(candidate); subquery.setMetaData(candidate); if (fmd.isElementCollection()) exp = and(exp, bindVar); else exp = and(exp, factory.equal(path, subpath)); return exp; }
path = factory.newPath(subQ); if ((corrJoin != null || corrRoot != null) && _parent.getCorrelatedPath() != null) { subQ.setSubqAlias(c.getAlias(this)); path = factory.newPath(subQ); correlatedParentPath = _parent.getCorrelatedPath();
Select subsel = (Select) subselCtx.getSelect(); Subquery subquery = subselCtx.getSubquery(); subsel.setParent(sel, subquery.getCandidateAlias());
/** * Convert this path to a kernel path (value). */ @Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> c) { org.apache.openjpa.kernel.exps.Path path = null; SubqueryImpl<?> subquery = c.getDelegator(); PathImpl<?,?> parent = getInnermostParentPath(); Value var = c.getRegisteredVariable(this); if (var != null) { path = factory.newPath(var); } else if (parent.inSubquery(subquery)) { org.apache.openjpa.kernel.exps.Subquery subQ = subquery.getSubQ(); path = factory.newPath(subQ); path.setMetaData(subQ.getMetaData()); path.setSchemaAlias(c.getAlias(this)); } else { path = (org.apache.openjpa.kernel.exps.Path) _parent.toValue(factory, c); path.get(_member.fmd, allowNull); } return path; }
private Expression getSubquery(String alias, Path path, Expression exp) { Value var = getVariable(alias, true); // this bind is for validateMapPath to resolve alias Expression bindVar = factory.bindVariable(var, path); FieldMetaData fmd = path.last(); ClassMetaData candidate = getFieldType(fmd); if (candidate == null && fmd.isElementCollection()) candidate = fmd.getDefiningMetaData(); setCandidate(candidate, alias); Context subContext = ctx(); Subquery subquery = ctx().getSubquery(); if (subquery == null){ subquery = factory.newSubquery(candidate, true, alias); subContext.setSubquery(subquery); } else { subquery.setSubqAlias(alias); } Path subpath = factory.newPath(subquery); subpath.setSchemaAlias(path.getCorrelationVar()); subpath.setMetaData(candidate); subquery.setMetaData(candidate); if (fmd.isElementCollection()) exp = and(exp, bindVar); else exp = and(exp, factory.equal(path, subpath)); return exp; }
path = factory.newPath(subQ); if ((corrJoin != null || corrRoot != null) && _parent.getCorrelatedPath() != null) { subQ.setSubqAlias(c.getAlias(this)); path = factory.newPath(subQ); correlatedParentPath = _parent.getCorrelatedPath();
Select subsel = (Select) subselCtx.getSelect(); Subquery subquery = subselCtx.getSubquery(); subsel.setParent(sel, subquery.getCandidateAlias());
/** * Convert this path to a kernel path value. */ @Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { final boolean subclasses = true; CriteriaExpressionBuilder exprBuilder = new CriteriaExpressionBuilder(); String alias = q.getAlias(this); ClassMetaData candidate = getCandidate(); _subq = factory.newSubquery(candidate, subclasses, alias); _subq.setMetaData(candidate); Stack<Context> contexts = getContexts(); Context context = new Context(null, _subq, contexts.peek()); contexts.push(context); _delegate.setContexts(contexts); QueryExpressions subexp = exprBuilder.getQueryExpressions(factory, _delegate); _subq.setQueryExpressions(subexp); if (subexp.projections.length > 0) JPQLExpressionBuilder.checkEmbeddable(subexp.projections[0], null); contexts.pop(); return _subq; }
/** * Convert this path to a kernel path (value). */ @Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> c) { org.apache.openjpa.kernel.exps.Path path = null; SubqueryImpl<?> subquery = c.getDelegator(); PathImpl<?,?> parent = getInnermostParentPath(); Value var = c.getRegisteredVariable(this); if (var != null) { path = factory.newPath(var); } else if (parent.inSubquery(subquery)) { org.apache.openjpa.kernel.exps.Subquery subQ = subquery.getSubQ(); path = factory.newPath(subQ); path.setMetaData(subQ.getMetaData()); path.setSchemaAlias(c.getAlias(this)); } else { path = (org.apache.openjpa.kernel.exps.Path) _parent.toValue(factory, c); path.get(_member.fmd, allowNull); } return path; }
private Expression getSubquery(String alias, Path path, Expression exp) { Value var = getVariable(alias, true); // this bind is for validateMapPath to resolve alias Expression bindVar = factory.bindVariable(var, path); FieldMetaData fmd = path.last(); ClassMetaData candidate = getFieldType(fmd); if (candidate == null && fmd.isElementCollection()) candidate = fmd.getDefiningMetaData(); setCandidate(candidate, alias); Context subContext = ctx(); Subquery subquery = ctx().getSubquery(); if (subquery == null){ subquery = factory.newSubquery(candidate, true, alias); subContext.setSubquery(subquery); } else { subquery.setSubqAlias(alias); } Path subpath = factory.newPath(subquery); subpath.setSchemaAlias(path.getCorrelationVar()); subpath.setMetaData(candidate); subquery.setMetaData(candidate); if (fmd.isElementCollection()) exp = and(exp, bindVar); else exp = and(exp, factory.equal(path, subpath)); return exp; }
path = factory.newPath(subQ); if ((corrJoin != null || corrRoot != null) && _parent.getCorrelatedPath() != null) { subQ.setSubqAlias(c.getAlias(this)); path = factory.newPath(subQ); correlatedParentPath = _parent.getCorrelatedPath();
public Context(ParsedJPQL parsed, Subquery subquery, Context parent) { this.parsed = parsed; this.subquery = subquery; this.parent = parent; if (subquery != null) { this.select = subquery.getSelect(); parent.addSubselContext(this); } }
Select subsel = (Select) subselCtx.getSelect(); Subquery subquery = subselCtx.getSubquery(); subsel.setParent(sel, subquery.getCandidateAlias());
/** * Convert this path to a kernel path value. */ @Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { final boolean subclasses = true; CriteriaExpressionBuilder exprBuilder = new CriteriaExpressionBuilder(); String alias = q.getAlias(this); ClassMetaData candidate = getCandidate(); _subq = factory.newSubquery(candidate, subclasses, alias); _subq.setMetaData(candidate); Stack<Context> contexts = getContexts(); Context context = new Context(null, _subq, contexts.peek()); contexts.push(context); _delegate.setContexts(contexts); QueryExpressions subexp = exprBuilder.getQueryExpressions(factory, _delegate); _subq.setQueryExpressions(subexp); if (subexp.projections.length > 0) JPQLExpressionBuilder.checkEmbeddable(subexp.projections[0], null); contexts.pop(); return _subq; }
/** * Convert this path to a kernel path (value). */ @Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> c) { org.apache.openjpa.kernel.exps.Path path = null; SubqueryImpl<?> subquery = c.getDelegator(); PathImpl<?,?> parent = getInnermostParentPath(); Value var = c.getRegisteredVariable(this); if (var != null) { path = factory.newPath(var); } else if (parent.inSubquery(subquery)) { org.apache.openjpa.kernel.exps.Subquery subQ = subquery.getSubQ(); path = factory.newPath(subQ); path.setMetaData(subQ.getMetaData()); path.setSchemaAlias(c.getAlias(this)); } else { path = (org.apache.openjpa.kernel.exps.Path) _parent.toValue(factory, c); path.get(_member.fmd, allowNull); } return path; }
private Expression getSubquery(String alias, Path path, Expression exp) { Value var = getVariable(alias, true); // this bind is for validateMapPath to resolve alias Expression bindVar = factory.bindVariable(var, path); FieldMetaData fmd = path.last(); ClassMetaData candidate = getFieldType(fmd); if (candidate == null && fmd.isElementCollection()) candidate = fmd.getDefiningMetaData(); setCandidate(candidate, alias); Context subContext = ctx(); Subquery subquery = ctx().getSubquery(); if (subquery == null){ subquery = factory.newSubquery(candidate, true, alias); subContext.setSubquery(subquery); } else { subquery.setSubqAlias(alias); } Path subpath = factory.newPath(subquery); subpath.setSchemaAlias(path.getCorrelationVar()); subpath.setMetaData(candidate); subquery.setMetaData(candidate); if (fmd.isElementCollection()) exp = and(exp, bindVar); else exp = and(exp, factory.equal(path, subpath)); return exp; }
path = factory.newPath(subQ); if ((corrJoin != null || corrRoot != null) && _parent.getCorrelatedPath() != null) { subQ.setSubqAlias(c.getAlias(this)); path = factory.newPath(subQ); correlatedParentPath = _parent.getCorrelatedPath();