Expression expression = (Expression)it.next(); if (expression.isQueryKeyExpression()) { ((QueryKeyExpression)expression).getBuilder().setSession(session.getRootSession(null)); ((QueryKeyExpression)expression).getBuilder().setQueryClass(getDescriptor().getJavaClass()); DatabaseMapping mapping = ((QueryKeyExpression)expression).getMapping(); if (!((QueryKeyExpression)expression).getBaseExpression().isExpressionBuilder()) {
Expression expression = (Expression)it.next(); if (expression.isQueryKeyExpression()) { ((QueryKeyExpression)expression).getBuilder().setSession(session.getRootSession(null)); ((QueryKeyExpression)expression).getBuilder().setQueryClass(getDescriptor().getJavaClass()); DatabaseMapping mapping = ((QueryKeyExpression)expression).getMapping(); if (!((QueryKeyExpression)expression).getBaseExpression().isExpressionBuilder()) {
if (objectExpression.getBuilder().getQueryClass() == null) { objectExpression = (QueryKeyExpression)objectExpression.rebuildOn(this.baseExpressionBuilder); if (objectExpression.getBuilder().getQueryClass() == null) { objectExpression.getBuilder().setQueryClass(this.descriptor.getJavaClass()); objectExpression.getBuilder().setSession(session.getRootSession(null));
Expression expression = (Expression)it.next(); if (expression.isQueryKeyExpression()) { ((QueryKeyExpression)expression).getBuilder().setSession(session.getRootSession(null)); ((QueryKeyExpression)expression).getBuilder().setQueryClass(getDescriptor().getJavaClass()); DatabaseMapping mapping = ((QueryKeyExpression)expression).getMapping(); if (!((QueryKeyExpression)expression).getBaseExpression().isExpressionBuilder()) {
/** * Calculate the source table for based on the various QueryKeyExpression * usages (join query keys, custom defined query keys, or query keys for * mappings). * * Called from {@link SQLSelectStatement#appendFromClauseForOuterJoin}. * * @return DatabaseTable */ public DatabaseTable getSourceTable() { if (getBaseExpression().isExpressionBuilder() && getBuilder().hasViewTable()) { return getBuilder().getViewTable(); } if (getMapping() != null) { // Grab the source table from the mapping not just the first table // from the descriptor. In an joined inheritance hierarchy, the // fk used in the outer join may be from a subclasses's table. if (getMapping().isObjectReferenceMapping() && ((ObjectReferenceMapping) getMapping()).isForeignKeyRelationship()) { return getMapping().getFields().firstElement().getTable(); } else { return ((ObjectExpression)this.baseExpression).getDescriptor().getTables().firstElement(); } } else { return ((ForeignReferenceQueryKey)getQueryKeyOrNull()).getSourceTable(); } }
/** * Calculate the source table for based on the various QueryKeyExpression * usages (join query keys, custom defined query keys, or query keys for * mappings). * * Called from {@link SQLSelectStatement#appendFromClauseForOuterJoin}. * * @return DatabaseTable */ public DatabaseTable getSourceTable() { if (getBaseExpression().isExpressionBuilder() && getBuilder().hasViewTable()) { return getBuilder().getViewTable(); } if (getMapping() != null) { // Grab the source table from the mapping not just the first table // from the descriptor. In an joined inheritance hierarchy, the // fk used in the outer join may be from a subclasses's table. if (getMapping().isObjectReferenceMapping() && ((ObjectReferenceMapping) getMapping()).isForeignKeyRelationship()) { return getMapping().getFields().firstElement().getTable(); } else { return ((ObjectExpression)this.baseExpression).getDescriptor().getTables().firstElement(); } } else { return ((ForeignReferenceQueryKey)getQueryKeyOrNull()).getSourceTable(); } }
if (objectExpression.getBuilder().getQueryClass() == null) { objectExpression = (QueryKeyExpression)objectExpression.rebuildOn(this.baseExpressionBuilder); if (objectExpression.getBuilder().getQueryClass() == null) { objectExpression.getBuilder().setQueryClass(this.descriptor.getJavaClass()); objectExpression.getBuilder().setSession(session.getRootSession(null));
/** * Validate and prepare the join expression. */ protected void prepareJoinExpression(Expression expression, AbstractSession session) { // Must be query key expression. if (!expression.isQueryKeyExpression()) { throw QueryException.mappingForExpressionDoesNotSupportJoining(expression); } QueryKeyExpression objectExpression = (QueryKeyExpression)expression; // Expression may not have been initialized. objectExpression.getBuilder().setSession(session.getRootSession(null)); if (objectExpression.getBuilder().getQueryClass() == null){ objectExpression.getBuilder().setQueryClass(this.descriptor.getJavaClass()); } // Can only join relationships. if ((objectExpression.getMapping() == null) || (!objectExpression.getMapping().isJoiningSupported())) { throw QueryException.mappingForExpressionDoesNotSupportJoining(objectExpression); } // Search if any of the expression traverse a 1-m. ObjectExpression baseExpression = objectExpression; while (!baseExpression.isExpressionBuilder()) { if (((QueryKeyExpression)baseExpression).shouldQueryToManyRelationship()) { setIsToManyJoinQuery(true); } if (baseExpression.shouldUseOuterJoin()) { setIsOuterJoinedAttributeQuery(true); } baseExpression = (ObjectExpression)baseExpression.getBaseExpression(); } }
if(!isClonedForSubQuery && statement.isSubSelect() && statement.getParentStatement().getBuilder().equals(getBuilder())) { if (baseExpression.isQueryKeyExpression()) { QueryKeyExpression baseQueryKeyExpression = (QueryKeyExpression) baseExpression;
if(!isClonedForSubQuery && statement.isSubSelect() && statement.getParentStatement().getBuilder().equals(getBuilder())) { if (baseExpression.isQueryKeyExpression()) { QueryKeyExpression baseQueryKeyExpression = (QueryKeyExpression) baseExpression;