| 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectch.elca.el4j.services.persistence.jpa.criteria.QueryBuilder
public final class QueryBuilder
SQL Query Builder. TODO: adapt the following example such that it produces valid JPQL. (no ON clause, but AS instead)
Example query definition:
      QueryBuilder builder = QueryBuilder.select("dep.NAME", "emp.name");
      QueryBuilder subQueryBuilder = QueryBuilder.select("1");
      subQueryBuilder.from("Dual ").startAnd().ifNotNull("1 <> {p}", 2).end().endBuilder();
      builder.from("DEPARTMENT dep")
          .innerJoin("EMPLOYEE emp", "dep.ID = emp.DEPARTMENT_ID")
          .innerJoin("UNIVERSITY unv", "unv.ID = dep.UNV_ID")
      .startOr()
          .ifNotNull("emp.position = {p}", "pos")
          .startAnd()
              .ifNotNull("emp.SALARY > {p}", 200)
              .ifNotNull("emp.SALARY < {p}", 300)
          .end()
          .exist(subQueryBuilder)
          .ifNotNull("dep.ID in {p}", depIds)
      .end()
      .orderBy(SortOrder.ASC, "dep.ID").endBuilder();
 
 The above query is equivalent to the following SQL:
 
     SELECT dep.NAME, emp.NAME
     FROM DEPARTMENT dep
         JOIN emp ON (dep.ID = emp.DEPARTMENT_ID)
         JOIN UNIVERSITY unv ON (unv.ID = dep.UNV_ID)
     WHERE emp.POSITION = {p}
         OR (emp.SALARY > {p} AND emp.SALARY < {p})" 
         OR EXISTS (SELECT 1 FROM DUAL WHERE 1 <> {p})
     ORDER BY DEP.ID ASC";
 
| Nested Class Summary | |
|---|---|
 class | 
QueryBuilder.ConditionList<T extends Expression>
Condition of QueryBuilder.  | 
| Method Summary | ||
|---|---|---|
 QueryBuilder | 
addSelectParameter(Object... parameters)
TODO: what's this?  | 
|
 void | 
append(String query)
TODO: this seems wrong. what's this for?  | 
|
 CountQuery | 
applyCount(javax.persistence.EntityManager entityManager)
creates count query with the given EntityManager and stores the prepared query which is then executed through the getCount() method.  | 
|
 SelectQuery | 
applySelect(javax.persistence.EntityManager entityManager)
creates select query with the given EntityManager and stores the prepared query which is then executed through the getResultList() methods.  | 
|
 SelectQuery | 
applySelect(javax.persistence.EntityManager entityManager,
            Class<?> resultClass)
creates select query with the given EntityManager and stores the prepared query which is then executed through the getResultList() methods.  | 
|
 QueryBuilder | 
clearOrderBy()
drops all ordering constraints.  | 
|
 QueryBuilder | 
endBuilder()
Mark this query as completed.  | 
|
 QueryBuilder | 
from(Class<?>... entityClasses)
Specifies on which classes the query is based.  | 
|
 QueryBuilder | 
from(String... from)
Specifies on which tables the query is based.  | 
|
 QueryBuilder | 
fromIf(String fromExp,
       boolean cond)
same as from(String...) except that
 from clause is added iff condition evaluates to true. | 
|
 List<Object> | 
getBodyParameters()
Get all attached parameters.  | 
|
 int | 
getCount()
 | 
|
 List<?> | 
getRawResultList()
 | 
|
 | 
getResultList(Class<T> clazz)
returns all entities matching the query.  | 
|
 | 
getResultList(Class<T> clazz,
              int firstRow,
              int maxNumOfRows)
gets at most maxNumOfRows results, first one being firstRow.  | 
|
 List<?> | 
getResultList(int firstRow,
              int maxNumOfRows)
returns the results in the given range.  | 
|
 List<Object> | 
getSelectParameters()
get SelectParameters.  | 
|
 | 
getSingleResult(Class<T> clazz)
 | 
|
 QueryBuilder | 
innerJoin(String join,
          String on)
Only used for native sql.  | 
|
 QueryBuilder | 
innerJoin(String join,
          String on,
          Object... params)
Only used for native sql.  | 
|
 QueryBuilder | 
join(String join)
Dont need 'on', used for JPQL.  | 
|
 QueryBuilder | 
joinIf(String join,
       boolean cond)
Dont need 'on', used for JPQL.  | 
|
 QueryBuilder | 
joinIf(String join,
       String on,
       boolean cond,
       Object... params)
like joinIf(String, String, boolean, Object...) but join is
 performed iff cond evaluates to true. | 
|
 QueryBuilder | 
leftJoin(String join,
         String on)
 | 
|
 QueryBuilder | 
leftJoin(String join,
         String on,
         Object... params)
Only used for native sql.  | 
|
 QueryBuilder | 
orderBy(SortOrder sortOrder,
        String orderBy)
appends the given column to the ordering restrictions iff not already ordered by the given column.  | 
|
 QueryBuilder | 
orderByIf(SortOrder sortOrder,
          String orderBy,
          boolean cond)
Appends given column to the ordering restrictions iff cond evaluates to true.  | 
|
 QueryBuilder | 
rightJoin(String join,
          String on)
 | 
|
 QueryBuilder | 
rightJoin(String join,
          String on,
          Object... params)
Only used for native sql.  | 
|
static QueryBuilder | 
select(String... select)
Creates a new Query with the given SELECT clause.  | 
|
 void | 
setParameters(List<Object> parameters)
Set parameters of the query.  | 
|
 QueryBuilder.ConditionList<QueryBuilder> | 
startAnd()
marks the beginning of a list of predicates to be ANDed.  | 
|
 QueryBuilder.ConditionList<QueryBuilder> | 
startOr()
marks the beginning of a list of predicates to be ORed.  | 
|
 String | 
toString()
 | 
|
 QueryBuilder | 
union(QueryBuilder builder)
 | 
|
| Methods inherited from class java.lang.Object | 
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait | 
| Method Detail | 
|---|
public List<Object> getSelectParameters()
public static QueryBuilder select(String... select)
select - select clause
public QueryBuilder addSelectParameter(Object... parameters)
public QueryBuilder from(Class<?>... entityClasses)
entityClasses - entities' classes
public QueryBuilder from(String... from)
from - tables
public QueryBuilder fromIf(String fromExp,
                           boolean cond)
from(String...) except that
 from clause is added iff condition evaluates to true.
fromExp - from string to addcond - predicate
public QueryBuilder innerJoin(String join,
                              String on,
                              Object... params)
join - on - params - 
public QueryBuilder innerJoin(String join,
                              String on)
join - on - params - 
public QueryBuilder leftJoin(String join,
                             String on,
                             Object... params)
join - on - params - 
public QueryBuilder leftJoin(String join,
                             String on)
public QueryBuilder union(QueryBuilder builder)
public QueryBuilder rightJoin(String join,
                              String on,
                              Object... params)
join - on - params - 
public QueryBuilder rightJoin(String join,
                              String on)
public QueryBuilder joinIf(String join,
                           String on,
                           boolean cond,
                           Object... params)
joinIf(String, String, boolean, Object...) but join is
 performed iff cond evaluates to true.
join - joinon - on clausecond - predicateparams - params
public QueryBuilder join(String join)
join - cond - 
public QueryBuilder joinIf(String join,
                           boolean cond)
join - cond - 
public QueryBuilder.ConditionList<QueryBuilder> startAnd()
public QueryBuilder.ConditionList<QueryBuilder> startOr()
public QueryBuilder endBuilder()
public QueryBuilder orderBy(SortOrder sortOrder,
                            String orderBy)
sortOrder - ASC or DESCorderBy - the column to order by
public QueryBuilder orderByIf(SortOrder sortOrder,
                              String orderBy,
                              boolean cond)
sortOrder - ASC or DESCorderBy - columncond - predicate
public SelectQuery applySelect(javax.persistence.EntityManager entityManager)
entityManager - em to use
public SelectQuery applySelect(javax.persistence.EntityManager entityManager,
                               Class<?> resultClass)
entityManager - em to useresultClass - class of result
public CountQuery applyCount(javax.persistence.EntityManager entityManager)
entityManager - em to use
public void setParameters(List<Object> parameters)
parameters - the parameters to set
public <T> List<T> getResultList(Class<T> clazz,
                                 int firstRow,
                                 int maxNumOfRows)
getResultList in interface SelectQueryT - entity typeclazz - entity classfirstRow - first row to receivemaxNumOfRows - max number of rows to receive
public List<?> getResultList(int firstRow,
                             int maxNumOfRows)
SelectQuery
getResultList in interface SelectQueryfirstRow - first rowmaxNumOfRows - maxNumOfRows
getResultList(Class, int, int).public <T> List<T> getResultList(Class<T> clazz)
getResultList in interface SelectQueryT - entity typeclazz - entity class
public List<?> getRawResultList()
public <T> T getSingleResult(Class<T> clazz)
getSingleResult in interface SelectQueryT - entity typeclazz - entity class
public int getCount()
getCount in interface CountQuerypublic void append(String query)
append in interface Expressionquery - the query to appendpublic String toString()
toString in class Objectpublic List<Object> getBodyParameters()
public QueryBuilder clearOrderBy()
  | 
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||