Class StructureQueryBuilder.StartStep<B extends StructureQueryBuilder<B>>

All Implemented Interfaces:
StructureQueryBuilder.BasicConstraintStep<B>
Enclosing class:
StructureQueryBuilder<B extends StructureQueryBuilder<B>>

public abstract static class StructureQueryBuilder.StartStep<B extends StructureQueryBuilder<B>> extends StructureQueryBuilder.RelationConstraintStartStep<B> implements StructureQueryBuilder.BasicConstraintStep<B>

This class allows you to either build a basic constraint or start building a relational constraint.

A basic constraint matches rows directly, whereas a relational constraint matches rows related to rows that satisfy a condition. (Related corresponds to a relation between rows induced by their positions in a forest.) E.g., issueKey("TS-129") is a basic constraint matching all instances of issue TS-129 in the forest; child.in.issueKey("TS-129") is a relational constraint matching all rows that have TS-129 among their children. (See also queries q3, q4 and q5 in the class documentation.)

Relational constraint has the form relation operator basicConstraint; you begin with selecting relation by referencing a field of this class inherited from StructureQueryBuilder.RelationConstraintStartStep. After that, you continue with the resulting object to add operator or combine with another relation using or(). In the latter case, a row is matched if it is related to rows that satisfy a condition by at least one of the used relations; for examples, see queries q6, q7 and q8 in the class documentation.

Note that this scheme is similar to JQL's field operator value, which matches issues having field that is operator (e.g., equal, not equal) to value. For example, JQL query type in (Epic, Story) matches issues having type that is in values Epic, Story. Compare it to parent.in.jql(typeEpic), which matches rows having parent that is in basic JQL constraint type = Epic.