Class EntityQuery<E extends BaseEntity>
- java.lang.Object
-
- com.github.collinalpert.java2db.queries.SingleEntityQuery<E>
-
- com.github.collinalpert.java2db.queries.EntityQuery<E>
-
- All Implemented Interfaces:
Queryable<E>,SingleQueryable<E>
- Direct Known Subclasses:
AsyncEntityQuery
public class EntityQuery<E extends BaseEntity> extends SingleEntityQuery<E> implements Queryable<E>
A class representing a DQL statement with different options, including where clauses, order by clauses and limits. It also automatically joins foreign keys so the corresponding entities (marked with theForeignKeyEntityattribute) can be filled.- Author:
- Collin Alpert
-
-
Field Summary
Fields Modifier and Type Field Description protected OrderTypesorderType-
Fields inherited from class com.github.collinalpert.java2db.queries.SingleEntityQuery
aliases, mapper, tableModule, type
-
-
Constructor Summary
Constructors Constructor Description EntityQuery(java.lang.Class<E> type)Constructor for creating a DQL statement for a given entity.
-
Method Summary
Modifier and Type Method Description EntityQuery<E>limit(int limit)Limits the result of the rows returned to a maximum of the passed integer.EntityQuery<E>limit(int limit, int offset)Limits the result of the rows returned to a maximum of the passed integer with an offset.EntityQuery<E>orderBy(OrderTypes orderType, com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?> function)Sets an ORDER BY clauses for the DQL statement with a sorting order option.EntityQuery<E>orderBy(OrderTypes orderType, com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?>[] functions)Sets multiple ORDER BY clauses for the DQL statement with a sorting order option.EntityQuery<E>orderBy(OrderTypes orderType, java.util.List<com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?>> functions)Sets multiple ORDER BY clauses for the DQL statement with a sorting order option.EntityQuery<E>orderBy(com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?> function)Sets an ORDER BY clauses for the DQL statement.EntityQuery<E>orderBy(com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?>[] functions)Sets multiple ORDER BY clauses for the DQL statement.EntityQuery<E>orderBy(java.util.List<com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?>> functions)Sets multiple ORDER BY clauses for the DQL statement.EntityQuery<E>orWhere(com.github.collinalpert.lambda2sql.functions.SqlPredicate<E> predicate)Sets or appends an OR WHERE clause to the DQL statement.<R> Queryable<R>project(com.github.collinalpert.lambda2sql.functions.SqlFunction<E,R> projection)Selects only a single column from a table.E[]toArray()Executes a new query and returns the result as an array.java.util.List<E>toList()Executes the query and returns the result as aListjava.util.stream.Stream<E>toStream()Executes the query and returns the result as aStreamEntityQuery<E>where(com.github.collinalpert.lambda2sql.functions.SqlPredicate<E> predicate)Sets or appends a WHERE clause for the DQL statement.-
Methods inherited from class com.github.collinalpert.java2db.queries.SingleEntityQuery
buildWhereClause, first, getQuery, getTableName
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.github.collinalpert.java2db.queries.SingleQueryable
first, getQuery
-
-
-
-
Field Detail
-
orderType
protected OrderTypes orderType
-
-
Constructor Detail
-
EntityQuery
public EntityQuery(java.lang.Class<E> type)
Constructor for creating a DQL statement for a given entity. This constructor should not be used directly, but through the DQL methods defined in theBaseService.- Parameters:
type- The entity to query.
-
-
Method Detail
-
where
public EntityQuery<E> where(com.github.collinalpert.lambda2sql.functions.SqlPredicate<E> predicate)
Sets or appends a WHERE clause for the DQL statement.- Overrides:
wherein classSingleEntityQuery<E extends BaseEntity>- Parameters:
predicate- The predicate describing the WHERE clause.- Returns:
- This
EntityQueryobject, now with an (appended) WHERE clause.
-
orWhere
public EntityQuery<E> orWhere(com.github.collinalpert.lambda2sql.functions.SqlPredicate<E> predicate)
Sets or appends an OR WHERE clause to the DQL statement.- Overrides:
orWherein classSingleEntityQuery<E extends BaseEntity>- Parameters:
predicate- The predicate describing the OR WHERE clause.- Returns:
- This
EntityQueryobject, now with an (appended) OR WHERE clause.
-
orderBy
public EntityQuery<E> orderBy(com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?> function)
Sets an ORDER BY clauses for the DQL statement.- Parameters:
function- The column to order by..- Returns:
- This
EntityQueryobject, now with a ORDER BY clause.
-
orderBy
public EntityQuery<E> orderBy(com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?>[] functions)
Sets multiple ORDER BY clauses for the DQL statement. The resulting ORDER BY statement will coalesce the passed columns.- Parameters:
functions- The columns to order by in a coalescing manner.- Returns:
- This
EntityQueryobject, now with a coalesced ORDER BY clause.
-
orderBy
public EntityQuery<E> orderBy(java.util.List<com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?>> functions)
Sets multiple ORDER BY clauses for the DQL statement. The resulting ORDER BY statement will coalesce the passed columns.- Parameters:
functions- The columns to order by in a coalescing manner.- Returns:
- This
EntityQueryobject, now with a coalesced ORDER BY clause.
-
orderBy
public EntityQuery<E> orderBy(OrderTypes orderType, com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?> function)
Sets an ORDER BY clauses for the DQL statement with a sorting order option.- Parameters:
orderType- The direction to order by. Can be either ascending or descending.function- The column to order by.- Returns:
- This
EntityQueryobject, now with a ORDER BY clause.
-
orderBy
public EntityQuery<E> orderBy(OrderTypes orderType, com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?>[] functions)
Sets multiple ORDER BY clauses for the DQL statement with a sorting order option. The resulting ORDER BY statement will coalesce the passed columns.- Parameters:
orderType- The direction to order by. Can be either ascending or descending.functions- The columns to order by in a coalescing manner.- Returns:
- This
EntityQueryobject, now with a coalesced ORDER BY clause.
-
orderBy
public EntityQuery<E> orderBy(OrderTypes orderType, java.util.List<com.github.collinalpert.lambda2sql.functions.SqlFunction<E,?>> functions)
Sets multiple ORDER BY clauses for the DQL statement with a sorting order option. The resulting ORDER BY statement will coalesce the passed columns.- Parameters:
orderType- The direction to order by. Can be either ascending or descending.functions- The columns to order by in a coalescing manner.- Returns:
- This
EntityQueryobject, now with a coalesced ORDER BY clause.
-
limit
public EntityQuery<E> limit(int limit, int offset)
Limits the result of the rows returned to a maximum of the passed integer with an offset. For example, the call.limit(10, 5)would return the rows 6-15.- Parameters:
limit- The maximum of rows to be returned.offset- The offset of the limit.- Returns:
- This
EntityQueryobject, now with a LIMIT with an OFFSET.
-
limit
public EntityQuery<E> limit(int limit)
Limits the result of the rows returned to a maximum of the passed integer.- Parameters:
limit- The maximum of rows to be returned.- Returns:
- This
EntityQueryobject, now with a LIMIT.
-
project
public <R> Queryable<R> project(com.github.collinalpert.lambda2sql.functions.SqlFunction<E,R> projection)
Selects only a single column from a table. This is meant if you don't want to fetch an entire entity from the database.- Overrides:
projectin classSingleEntityQuery<E extends BaseEntity>- Type Parameters:
R- The type of the column you want to retrieve.- Parameters:
projection- The column to project to.- Returns:
- A queryable containing the projection.
-
toList
public java.util.List<E> toList()
Executes the query and returns the result as aList- Specified by:
toListin interfaceQueryable<E extends BaseEntity>- Returns:
- A list of entities representing the result rows.
-
toStream
public java.util.stream.Stream<E> toStream()
Executes the query and returns the result as aStream- Specified by:
toStreamin interfaceQueryable<E extends BaseEntity>- Returns:
- A list of entities representing the result rows.
-
toArray
public E[] toArray()
Executes a new query and returns the result as an array.- Specified by:
toArrayin interfaceQueryable<E extends BaseEntity>- Returns:
- An array of entities representing the result rows.
-
-