Apache Cayenne v3.0 Documentation

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.