|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object ch.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 setpublic <T> List<T> getResultList(Class<T> clazz, int firstRow, int maxNumOfRows)
getResultList
in interface SelectQuery
T
- 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 SelectQuery
firstRow
- first rowmaxNumOfRows
- maxNumOfRows
getResultList(Class, int, int).
public <T> List<T> getResultList(Class<T> clazz)
getResultList
in interface SelectQuery
T
- entity typeclazz
- entity class
public List<?> getRawResultList()
public <T> T getSingleResult(Class<T> clazz)
getSingleResult
in interface SelectQuery
T
- entity typeclazz
- entity class
public int getCount()
getCount
in interface CountQuery
public void append(String query)
append
in interface Expression
query
- the query to appendpublic String toString()
toString
in class Object
public List<Object> getBodyParameters()
public QueryBuilder clearOrderBy()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |