FileDocCategorySizeDatePackage
ManualQueryKeyExpression.javaAPI DocGlassfish v2 API5280Tue May 22 16:54:32 BST 2007oracle.toplink.essentials.internal.expressions

ManualQueryKeyExpression

public class ManualQueryKeyExpression extends QueryKeyExpression
This class represents a "query key" that isn't really there in the descriptors. For example, I could use this to create an 'employee' query key from an 'address' node even if addresses don't know their employee. It's called manual, because I will have to provide the relevant join criteria myself (normally based on a reverse relationship. Motivated by batch reading.

Fields Summary
Constructors Summary
public ManualQueryKeyExpression()

        super();
    
public ManualQueryKeyExpression(String impliedRelationshipName, Expression base)

        super(impliedRelationshipName, base);
    
public ManualQueryKeyExpression(String impliedRelationshipName, Expression base, ClassDescriptor descriptor)

        super(impliedRelationshipName, base);
        this.descriptor = descriptor;
    
Methods Summary
public java.lang.StringdescriptionOfNodeType()
INTERNAL: Used for debug printing.

        return "Manual Query Key";
    
public java.util.VectorgetOwnedTables()
INTERNAL: If we ever get in the circumstance of a manual query key to an aggregate, then we can assume that the owner of that aggregate isn't participating (and even if it is, we can't know which node it is, so *DO* use the aggregate's parents tables

        if (getDescriptor() == null) {
            return null;
        } else {
            return getDescriptor().getTables();
        }
    
public oracle.toplink.essentials.querykeys.QueryKeygetQueryKeyOrNull()

        return null;
    
public booleanisAttribute()
INTERNAL: We can never be an attribute, we're always a join

        return false;
    
public oracle.toplink.essentials.expressions.ExpressionmappingCriteria()

        return null;
    
public oracle.toplink.essentials.expressions.ExpressionrebuildOn(oracle.toplink.essentials.expressions.Expression newBase)
INTERNAL: This expression is built on a different base than the one we want. Rebuild it and return the root of the new tree

        ObjectExpression newLocalBase = (ObjectExpression)getBaseExpression().rebuildOn(newBase);
        return newLocalBase.getManualQueryKey(getName(), getDescriptor());
    
public oracle.toplink.essentials.expressions.ExpressiontwistedForBaseAndContext(oracle.toplink.essentials.expressions.Expression newBase, oracle.toplink.essentials.expressions.Expression context)
INTERNAL: Rebuild myself against the base, with the values of parameters supplied by the context expression. This is used for transforming a standalone expression (e.g. the join criteria of a mapping) into part of some larger expression. You normally would not call this directly, instead calling twist See the comment there for more details"

        ObjectExpression twistedBase = (ObjectExpression)getBaseExpression().twistedForBaseAndContext(newBase, context);
        return twistedBase.getManualQueryKey(getName(), getDescriptor());

    
public voidvalidateNode()
Do any required validation for this node. Throw an exception if it's incorrect.

        // Override super.validateNode() because those criteria don't apply to us