Package org.compiere.model
Class Query
java.lang.Object
org.compiere.model.Query
- Author:
- Low Heng Sin, Teo Sarca, www.arhipac.ro
- FR [ 1981760 ] Improve Query class
- BF [ 2030280 ] org.compiere.model.Query apply access filter issue
- FR [ 2041894 ] Add Query.match() method
- FR [ 2107068 ] Query.setOrderBy should be more error tolerant
- FR [ 2107109 ] Add method Query.setOnlyActiveRecords
- FR [ 2421313 ] Introduce Query.firstOnly convenient method
- FR [ 2546052 ] Introduce Query aggregate methods
- FR [ 2726447 ] Query aggregate methods for all return types
- FR [ 2818547 ] Implement Query.setOnlySelection https://sourceforge.net/p/adempiere/feature-requests/759/
- FR [ 2818646 ] Implement Query.firstId/firstIdOnly https://sourceforge.net/p/adempiere/feature-requests/760/, Redhuan D. Oon
- FR: [ 2214883 ] Remove SQL code and Replace for Query // introducing SQL String prompt in log.info
- FR: [ 2214883 ] - to introduce .setClient_ID
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionaddJoinClause
(String joinClause) void
addTableDirectJoin
(String foreignTableName) Convenient method to add table direct type of joint.
For e.g, if foreignTableName is C_BPartner and TableName for Query is AD_User,
this will add join clause of
"INNER JOIN C_BPartner ON (AD_User.C_BPartner_ID=C_BPartner.C_BParner_ID)".Aggregate given expression on this criteria<T> T
Aggregate given expression on this criteriaint
count()
Count items that match query criteria<T extends PO>
Tfirst()
Return first PO that match query criteriaint
firstId()
Return first IDint
Return first ID.<T extends PO>
TReturn first PO that match query criteria.int[]
getIDs()
Get a Array with the IDs for this QuerygetSQL()
red1 - returns full SQL string - for caller needsiterate()
Return an Iterator implementation to fetch one PO at a time.list()
Return a list of all po that match the query criteria.boolean
match()
Check if there items for query criteria<T extends PO>
POResultSet<T>scroll()
Return a simple wrapper over a jdbc resultset.setApplyAccessFilter
(boolean flag) Turn on/off the addition of data access filtersetApplyAccessFilter
(boolean fullyQualified, boolean RW) Turn on data access filter with controlsSet Client_ID true for WhereClause routine to include AD_Client_IDsetClient_ID
(boolean isIncludeClient) Set include or not include AD_Client_ID in where clausesetForUpdate
(boolean forUpdate) Add FOR UPDATE clausesetNoVirtualColumn
(boolean noVirtualColumn) Virtual columns are lazy loaded by default.setOnlyActiveRecords
(boolean onlyActiveRecords) Select only active records (i.e.setOnlySelection
(int AD_PInstance_ID) Only records that are in T_Selection with AD_PInstance_ID.setOrderBy
(String orderBy) Set order by clause.setPage
(int pPageSize, int pPagesToSkip) Set the pagination of the query.setPageSize
(int pPageSize) Set the pagination of the query.setParameters
(Object... parameters) Set query parameterssetParameters
(List<Object> parameters) Set query parameterssetQueryTimeout
(int seconds) setRecordstoSkip
(int pRecordsToSkip) Set the number of records to skip (a.k.a.setVirtualColumns
(String... virtualColumns) Virtual columns to be included in the query.stream()
Return an Stream implementation to fetch one PO at a time.SUM sqlExpression for items that match query criteria
-
Field Details
-
AGGREGATE_COUNT
- See Also:
-
AGGREGATE_SUM
- See Also:
-
AGGREGATE_AVG
- See Also:
-
AGGREGATE_MIN
- See Also:
-
AGGREGATE_MAX
- See Also:
-
-
Constructor Details
-
Query
Deprecated.UseQuery(Properties, MTable, String, String)
instead because this method is security error prone- Parameters:
table
-whereClause
-trxName
-
-
Query
- Parameters:
ctx
- contexttable
-whereClause
-trxName
-
-
Query
- Parameters:
ctx
-tableName
-whereClause
-trxName
-
-
-
Method Details
-
setParameters
Set query parameters- Parameters:
parameters
-
-
setParameters
Set query parameters- Parameters:
parameters
- collection of parameters
-
setOrderBy
Set order by clause. If the string starts with "ORDER BY" then "ORDER BY" keywords will be discarded.- Parameters:
orderBy
- SQL ORDER BY clause
-
setApplyAccessFilter
Turn on/off the addition of data access filter- Parameters:
flag
-
-
setApplyAccessFilter
Turn on data access filter with controls- Parameters:
fullyQualified
-RW
-- Returns:
-
setOnlyActiveRecords
Select only active records (i.e. IsActive='Y')- Parameters:
onlyActiveRecords
-
-
setClient_ID
Set Client_ID true for WhereClause routine to include AD_Client_ID -
setClient_ID
Set include or not include AD_Client_ID in where clause -
setOnlySelection
Only records that are in T_Selection with AD_PInstance_ID.- Parameters:
AD_PInstance_ID
-
-
setForUpdate
Add FOR UPDATE clause- Parameters:
forUpdate
-
-
setNoVirtualColumn
Virtual columns are lazy loaded by default. In case lazy loading is not desired use this method with thefalse
value.- Parameters:
noVirtualColumn
- Whether to load (false
value) all declared virtual columns at once or use lazy loading (true
value).- Returns:
- See Also:
-
setQueryTimeout
-
addJoinClause
-
addTableDirectJoin
Convenient method to add table direct type of joint.
For e.g, if foreignTableName is C_BPartner and TableName for Query is AD_User,
this will add join clause of
"INNER JOIN C_BPartner ON (AD_User.C_BPartner_ID=C_BPartner.C_BParner_ID)".- Parameters:
foreignTableName
-
-
list
Return a list of all po that match the query criteria.- Returns:
- List
- Throws:
DBException
-
first
Return first PO that match query criteria- Returns:
- first PO
- Throws:
DBException
-
firstOnly
Return first PO that match query criteria. If there are more records that match criteria an exception will be thrown- Returns:
- first PO
- Throws:
DBException
-
firstId
Return first ID- Returns:
- first ID or -1 if not found
- Throws:
DBException
-
firstIdOnly
Return first ID. If there are more results and exception is thrown.- Returns:
- first ID or -1 if not found
- Throws:
DBException
-
getSQL
red1 - returns full SQL string - for caller needs- Returns:
- buildSQL(null,true)
- Throws:
DBException
-
aggregate
Aggregate given expression on this criteria- Parameters:
sqlExpression
-sqlFunction
-- Returns:
- aggregated value
- Throws:
DBException
-
aggregate
public <T> T aggregate(String sqlExpression, String sqlFunction, Class<T> returnType) throws DBException Aggregate given expression on this criteria- Type Parameters:
T
-- Parameters:
sqlExpression
-sqlFunction
-returnType
-- Returns:
- aggregated value
- Throws:
DBException
-
count
Count items that match query criteria- Returns:
- count
- Throws:
DBException
-
sum
SUM sqlExpression for items that match query criteria- Parameters:
sqlExpression
-- Returns:
- sum
-
match
Check if there items for query criteria- Returns:
- true if exists, false otherwise
- Throws:
DBException
-
stream
Return an Stream implementation to fetch one PO at a time. This method will only create POs on-demand and they will become eligible for garbage collection once they have been consumed by the stream, so unlikelist()
it doesn't have to hold a copy of all the POs in the result set in memory at one time. And unlike {#link #iterate()}, it only creates one ResultSet and iterates over it, creating a PO for each row (iterate()
, on the other hand, has to re-run the query for each element).
For situations where you need to iterate over a result set and operate on the results one-at-a-time rather than operate on the group as a whole, this method is likely to give better performance thanlist()
oriterate()
.
However, because it keeps the underlyingResultSet
open, you need to make sure that the stream is properly disposed of usingclose()
or else you will get resource leaks. AsStream
extendsAutoCloseable
, you can use it in a try-with-resources statement to automatically close it when you are done.- Returns:
- Stream of POs.
- Throws:
DBException
-
iterate
Return an Iterator implementation to fetch one PO at a time. The implementation first retrieve all IDS that match the query criteria and issue sql query to fetch the PO when caller want to fetch the next PO. This minimize memory usage but it is slower than the list method.- Returns:
- Iterator
- Throws:
DBException
-
scroll
Return a simple wrapper over a jdbc resultset. It is the caller responsibility to call the close method to release the underlying database resources.- Returns:
- POResultSet
- Throws:
DBException
-
setPageSize
Set the pagination of the query.- Parameters:
pPageSize
- Limit current query rows return.- Returns:
- current Query
-
setPage
Set the pagination of the query.- Parameters:
pPageSize
- Limit current query rows return.pPagesToSkip
- Number of pages will be skipped on query run. ZERO for first page- Returns:
- current Query
-
setRecordstoSkip
Set the number of records to skip (a.k.a. OFFSET)- Parameters:
pRecordsToSkip
- Limit current query rows return.- Returns:
- current Query
-
getIDs
public int[] getIDs()Get a Array with the IDs for this Query- Returns:
- Get a Array with the IDs
-
setVirtualColumns
Virtual columns to be included in the query.- Parameters:
virtualColumns
- virtual column names
-
Query(Properties, MTable, String, String)
instead because this method is security error prone