Skip to main content

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();