Constructing queries
First of create a query object
SolutionQuery myQuery = session.getSolutionQuery( "mynewsolution" );
A query is built much like an SQL query by appending different fields to be SELECT'ed
myQuery.addSelectField("MYNUMBER");
myQuery.addSelectField("MYOTHERNUMBER");
// or
myQuery.addSelectField("MYNUMBER", "MYOTHERNUMBER");
Additionally WHERE components are added
myQuery.addWhereCriterion("StatusID", "In progress");
myQuery.addWhereCriterion("INCOME", QueryPart.MORE, 22);
myQuery.addWhereInList("PARENTITEMS", arrayListOfDataID);
Likewise operators can be added
...
myQuery.addWhereOR();
...
...
myQuery.addWhereAND();
...
Note that lookup values etc. will be translated silently.
myQuery.setSortOrder("INCOME", true);
Order records by income in descending order (true).
By default the API limits solution queries to 100 rows. To increase this:
myQuery.setLimit(100000);
To do pagination use this:
myQuery.setLimitAndOffset(100, 100);
Finally execute the query and return the results
SolutionQueryResultSet records = myQuery.executeQuery();
SolutionQuery supports method chaining, so the following two samples are equivalent.
SolutionQuery sq = session.getSolutionQuery("cars");
sq.addSelectField("MANUFACTURER", "MODEL");
sq.addWhereCriterion("PRICE", QueryPart.MORE, 250000);
sq.setSortOrderAsc("INCOME");
SolutionQueryResultSet rs = sq.executeQuery();
SolutionQueryResultSet rs = session.getSolutionQuery("cars")
.addSelectField("MANUFACTURER", "MODEL")
.addWhereCriterion("PRICE", QueryPart.MORE, 250000)
.setSortOrderAsc("INCOME")
.executeQuery();