public class ColumnSelect<T> extends FluentSelect<T>
A helper builder for queries selecting individual properties based on the root object.
It can be used to select properties of the object itself, properties of related entities or some function calls (including aggregate functions).
Usage examples:
// select list of names:
List<String> names = ObjectSelect.columnQuery(Artist.class, Artist.ARTIST_NAME).select(context);
// select count:
long count = ObjectSelect.columnQuery(Artist.class, Property.COUNT).selectOne();
// select only required properties of an entity:
List<Object[]> data = ObjectSelect.columnQuery(Artist.class, Artist.ARTIST_NAME, Artist.DATE_OF_BIRTH)
.where(Artist.ARTIST_NAME.like("Picasso%))
.select(context);
Note: this class can't be instantiated directly. Use ObjectSelect
.
ObjectSelect.columnQuery(Class, Property)
,
Serialized FormcacheGroup, cacheStrategy, dbEntityName, entityName, entityType, limit, offset, orderings, pageSize, prefetches, statementFetchSize, where
dataMap, lastResolver, name, replacementQuery
Modifier | Constructor and Description |
---|---|
protected |
ColumnSelect() |
protected |
ColumnSelect(ObjectSelect<T> select)
Copy constructor to convert ObjectSelect to ColumnSelect
|
Modifier and Type | Method and Description |
---|---|
ColumnSelect<T> |
and(Collection<Expression> expressions)
AND's provided expressions to the existing WHERE or HAVING clause expression.
|
ColumnSelect<T> |
and(Expression... expressions)
AND's provided expressions to the existing WHERE clause expression.
|
ColumnSelect<Object[]> |
avg(Property<?> property)
Select average value of property
|
ColumnSelect<T> |
cacheGroup(String cacheGroup) |
ColumnSelect<T> |
cacheStrategy(QueryCacheStrategy strategy) |
ColumnSelect<T> |
cacheStrategy(QueryCacheStrategy strategy,
String cacheGroup) |
protected <E> ColumnSelect<E> |
column(Property<E> property) |
ColumnSelect<Object[]> |
columns(Collection<Property<?>> properties)
Add properties to select.
|
ColumnSelect<Object[]> |
columns(Property<?> firstProperty,
Property<?>... otherProperties)
Add properties to select.
|
ColumnSelect<Object[]> |
count()
Shortcut for
columns(Property, Property[]) columns}(Property.COUNT) |
ColumnSelect<Object[]> |
count(Property<?> property)
Select COUNT(property)
|
protected Query |
createReplacementQuery(EntityResolver resolver)
Translates self to a SelectQuery.
|
ColumnSelect<T> |
dbEntityName(String dbEntityName)
Sets the
DbEntity name to fetch without changing the return type
of the query. |
ColumnSelect<T> |
distinct()
Explicitly request distinct in query.
|
ColumnSelect<T> |
entityName(String entityName)
Sets the
ObjEntity name to fetch without changing the return type
of the query. |
ColumnSelect<T> |
entityType(Class<?> entityType)
Sets the type of the entity to fetch without changing the return type of
the query.
|
Collection<Property<?>> |
getColumns() |
Expression |
getHaving()
Returns a HAVING clause Expression of this query.
|
ColumnSelect<T> |
having(Expression expression)
Appends a having qualifier expression of this query.
|
ColumnSelect<T> |
having(String expressionString,
Object... parameters)
Appends a having qualifier expression of this query, using provided expression
String and an array of position parameters.
|
ColumnSelect<T> |
limit(int fetchLimit)
Resets query fetch limit - a parameter that defines max number of objects
that should be ever be fetched from the database.
|
ColumnSelect<T> |
localCache()
Instructs Cayenne to look for query results in the "local" cache when
running the query.
|
ColumnSelect<T> |
localCache(String cacheGroup)
Instructs Cayenne to look for query results in the "local" cache when
running the query.
|
ColumnSelect<Object[]> |
max(Property<?> property)
Select maximum value of property
|
ColumnSelect<Object[]> |
min(Property<?> property)
Select minimum value of property
|
ColumnSelect<T> |
offset(int fetchOffset)
Resets query fetch offset - a parameter that defines how many objects
should be skipped when reading data from the database.
|
ColumnSelect<T> |
or(Collection<Expression> expressions)
OR's provided expressions to the existing WHERE or HAVING clause expression.
|
ColumnSelect<T> |
or(Expression... expressions)
OR's provided expressions to the existing WHERE clause expression.
|
ColumnSelect<T> |
orderBy(Collection<Ordering> orderings)
Adds a list of orderings to this query.
|
ColumnSelect<T> |
orderBy(Ordering... orderings)
Add one or more orderings to this query.
|
ColumnSelect<T> |
orderBy(String property)
Add an ascending ordering on the given property.
|
ColumnSelect<T> |
orderBy(String property,
SortOrder sortOrder)
Add an ordering on the given property.
|
ColumnSelect<T> |
pageSize(int pageSize)
Resets query page size.
|
ColumnSelect<T> |
prefetch(PrefetchTreeNode prefetch)
Merges prefetch into the query prefetch tree.
|
ColumnSelect<T> |
prefetch(String path,
int semantics)
Merges a prefetch path with specified semantics into the query prefetch
tree.
|
T |
selectFirst(ObjectContext context)
Selects a single object using provided context.
|
ColumnSelect<T> |
sharedCache()
Instructs Cayenne to look for query results in the "shared" cache when
running the query.
|
ColumnSelect<T> |
sharedCache(String cacheGroup)
Instructs Cayenne to look for query results in the "shared" cache when
running the query.
|
ColumnSelect<T> |
statementFetchSize(int size)
Sets fetch size of the PreparedStatement generated for this query.
|
<E extends Number> |
sum(Property<E> property)
Select sum of values
|
ColumnSelect<T> |
suppressDistinct()
Explicitly suppress distinct in query.
|
ColumnSelect<T> |
where(Expression expression)
Appends a qualifier expression of this query.
|
ColumnSelect<T> |
where(String expressionString,
Object... parameters)
Appends a qualifier expression of this query, using provided expression
String and an array of position parameters.
|
batchIterator, getCacheGroup, getCacheStrategy, getDbEntityName, getEntityName, getEntityType, getLimit, getOffset, getOrderings, getPageSize, getPrefetches, getStatementFetchSize, getWhere, iterate, iterator, select, selectOne
createSQLAction, getDataMap, getMetaData, getName, getReplacementQuery, route, setDataMap, setName
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
createSQLAction, getDataMap, getMetaData, getName, route
protected ColumnSelect()
protected ColumnSelect(ObjectSelect<T> select)
protected Query createReplacementQuery(EntityResolver resolver)
FluentSelect
createReplacementQuery
in class FluentSelect<T>
public ColumnSelect<T> entityType(Class<?> entityType)
public ColumnSelect<T> entityName(String entityName)
ObjEntity
name to fetch without changing the return type
of the query. This form is most often used for generic entities that
don't map to a distinct class.public ColumnSelect<T> dbEntityName(String dbEntityName)
DbEntity
name to fetch without changing the return type
of the query. This form is most often used for generic entities that
don't map to a distinct class.public ColumnSelect<T> where(Expression expression)
and(Expression...)
that can be used a syntactic sugar.public ColumnSelect<T> where(String expressionString, Object... parameters)
public ColumnSelect<T> and(Expression... expressions)
public ColumnSelect<T> or(Expression... expressions)
public ColumnSelect<T> orderBy(String property)
property
- the property to sort onpublic ColumnSelect<T> orderBy(String property, SortOrder sortOrder)
property
- the property to sort onsortOrder
- the direction of the orderingpublic ColumnSelect<T> orderBy(Ordering... orderings)
public ColumnSelect<T> orderBy(Collection<Ordering> orderings)
public ColumnSelect<T> prefetch(PrefetchTreeNode prefetch)
public ColumnSelect<T> prefetch(String path, int semantics)
public ColumnSelect<T> limit(int fetchLimit)
public ColumnSelect<T> offset(int fetchOffset)
public ColumnSelect<T> pageSize(int pageSize)
public ColumnSelect<T> statementFetchSize(int size)
Statement.setFetchSize(int)
public ColumnSelect<T> cacheStrategy(QueryCacheStrategy strategy)
public ColumnSelect<T> cacheStrategy(QueryCacheStrategy strategy, String cacheGroup)
public ColumnSelect<T> cacheGroup(String cacheGroup)
public ColumnSelect<T> localCache(String cacheGroup)
query.cacheStrategy(QueryCacheStrategy.LOCAL_CACHE, cacheGroup);
public ColumnSelect<T> localCache()
query.cacheStrategy(QueryCacheStrategy.LOCAL_CACHE);
public ColumnSelect<T> sharedCache(String cacheGroup)
query.cacheStrategy(QueryCacheStrategy.SHARED_CACHE, cacheGroup);
public ColumnSelect<T> sharedCache()
query.cacheStrategy(QueryCacheStrategy.SHARED_CACHE);
public ColumnSelect<Object[]> columns(Property<?> firstProperty, Property<?>... otherProperties)
Add properties to select.
Can be any properties that can be resolved against root entity type (root entity properties, function call expressions, properties of relationships, etc).
List<Object[]> columns = ObjectSelect.columnQuery(Artist.class, Artist.ARTIST_NAME)
.columns(Artist.ARTIST_SALARY, Artist.DATE_OF_BIRTH)
.select(context);
firstProperty
- first propertyotherProperties
- array of properties to selectcolumn(Property)
,
columns(Collection)
public ColumnSelect<Object[]> columns(Collection<Property<?>> properties)
Add properties to select.
Can be any properties that can be resolved against root entity type (root entity properties, function call expressions, properties of relationships, etc).
properties
- collection of properties, must contain at least one elementcolumns(Property, Property[])
protected <E> ColumnSelect<E> column(Property<E> property)
public ColumnSelect<Object[]> count()
Shortcut for columns(Property, Property[])
columns}(Property.COUNT)
public ColumnSelect<Object[]> count(Property<?> property)
Select COUNT(property)
Can return different result than COUNT(*) as it will count only non null values
count()
public ColumnSelect<Object[]> min(Property<?> property)
Select minimum value of property
columns(Property, Property[])
public ColumnSelect<Object[]> max(Property<?> property)
Select maximum value of property
columns(Property, Property[])
public ColumnSelect<Object[]> avg(Property<?> property)
Select average value of property
columns(Property, Property[])
public <E extends Number> ColumnSelect<Object[]> sum(Property<E> property)
Select sum of values
columns(Property, Property[])
public ColumnSelect<T> having(Expression expression)
and(Expression...)
that can be used a syntactic sugar.public ColumnSelect<T> having(String expressionString, Object... parameters)
public ColumnSelect<T> and(Collection<Expression> expressions)
public ColumnSelect<T> or(Collection<Expression> expressions)
public ColumnSelect<T> distinct()
public ColumnSelect<T> suppressDistinct()
public Collection<Property<?>> getColumns()
public Expression getHaving()
public T selectFirst(ObjectContext context)
Select
If it matched more than one object, the first object from the list is
returned. This makes 'selectFirst' different from
Select.selectOne(ObjectContext)
, which would throw in this situation.
'selectFirst' is useful e.g. when the query is ordered and we only want
to see the first object (e.g. "most recent news article"), etc.
Selecting the first object via "Select.selectFirst(ObjectContext)" is more comprehensible than selecting via "ObjectContext.selectFirst(Select)", because implementations of "Select" set fetch size limit to one.
Copyright © 2001–2018 Apache Cayenne. All rights reserved.