package io.ebean; /** * Represents a Conjunction or a Disjunction. *
* Basically with a Conjunction you join together many expressions with AND, and * with a Disjunction you join together many expressions with OR. *
** Note: where() always takes you to the top level WHERE expression list. *
*{@code
* Query q =
* DB.find(Person.class)
* .where()
* .or()
* .like("name", "Rob%")
* .eq("status", Status.NEW)
*
* // where() returns us to the top level expression list
* .where().gt("id", 10);
*
* // read as...
* // where ( ((name like Rob%) or (status = NEW)) AND (id > 10) )
*
* }
* * Note: endJunction() takes you to the parent expression list *
*{@code
*
* Query q =
* DB.find(Person.class)
* .where()
* .or()
* .like("name", "Rob%")
* .eq("status", Status.NEW)
* .endJunction()
*
* // endJunction().. takes us to the 'parent' expression list
* // which in this case is the top level (same as where())
*
* .gt("id", 10);
*
* // read as...
* // where ( ((name like Rob%) or (status = NEW)) AND (id > 10) )
* }
* * Example of a nested disjunction. *
*{@code
* Query q =
* DB.find(Customer.class)
* .where()
* .or()
* .and()
* .startsWith("name", "r")
* .eq("anniversary", onAfter)
* .endAnd()
* .and()
* .eq("status", Customer.Status.ACTIVE)
* .gt("id", 0)
* .endAnd()
* .order().asc("name");
*
* q.findList();
* String s = q.getGeneratedSql();
*
* // this produces an expression like:
* ( name like ? and c.anniversary = ? ) or (c.status = ? and c.id > ? )
*
* }
*/
public interface Junction