|
||||||||||
| 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 | |||||||||