Package io.ebean

Interface Junction<T>

  • All Superinterfaces:
    Expression, ExpressionList<T>

    public interface Junction<T>
    extends Expression, ExpressionList<T>
    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.

    
     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 &gt; 10) )
    
     

    Note: endJunction() takes you to the parent expression list

    
    
     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.

    
     Query<Customer> 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 > ? )