This chapter is dedicated to the use of expressions as qualifiers in SelectQuery. Expressions in general are discussed here.

Building Qualifier

The previous chapter showed how to build a query to fetch all data from a single table. In most situations though only a subset of data matching a certain criteria is needed. Cayenne provides an expressions package to control the filtering behavior of the queries. Expressions applied to queries are called "qualifiers".

SelectQuery provides a few ways to initialize and modify the qualifier:

  • public SelectQuery(Class<?> objectClass, Expression e) : Passing expression as a second argument in constructor.
  • public void setQualifier(Expression qualifier) : Explicitly setting the qualifier expression.
  • public void andQualifier(Expression e) : Chaining an expression with an already existing qualifier using logical AND.
  • public void orQualifier(Expression e) : Chaining an expression with an already existing qualifier using logical OR.

Specifying Join Semantics

Each path expression in a qualifier results in a SQL JOIN in a generated SQL. By default all joins are INNER joins. If LEFT OUTER joins are desirable, users can specify them with a plus sign ("+") after each affected relationship segment in a path expression. E.g. a path like "paintingArray+.name" would result in a LEFT OUTER JOIN for an Artist SelectQuery, ensuring that artists without joins are also included in the query result.