Finding Case Objects by Criteria
From within a script, use the findByCriteria method on the appropriate case access class to return a list of case references that match the criteria defined in a query string.
The query must be expressed in Data Query Language (DQL), and can be supplied either as a string or in a previously created criteria object.
| Method syntax | Description |
|---|---|
| findByCriteria(criteriaObject) | Returns a paginated list of case references that match the criteria specified in the criteriaObject. |
| findByCriteria(DQLString) | Returns a list of case references that match the criteria specified in the DQLString. |
| findByCriteria(DQLString,index,pageSize) | Returns a paginated list of case references that match the criteria specified in the DQLString. |
where:
- DQLString defines the query to be executed. See Case Data Query Language (DQL).
- criteriaObject is a previously created criteria object.
- index is the (zero-based) number of the first record to return in a paginated list.
- pageSize is the number of records to return in each page of a paginated list. A value of -1 means return all records.
Examples
This example shows three different ways of using a query string.
// Find customers who have no orders (returning references to the first 100 results).
var custRefs = cac_com_example_ordermodel_Customer.findByCriteria("size(orders) = 0", 0, 100);
// Find orders from customers whose name begins with “EasyAs” (returning references to the first 20).
var ordRefs = cac_com_example_ordermodel_Order.findByCriteria("customer.name='EasyAs*'",0,20);
// Find customers who have orders that include Part Number PN:10001
// ordering the results by customer name (returning up to 100 customer references).
var custRefs = cac_com_example_ordermodel_Customer.findByCriteria("orders.orderLines.orderItem.partNum = 'PN:10001' order by name", 0, 100);
This example shows how to use a query object, and how to use parameters to re-initialize the query on different executions.
// Create a new Criteria object defining a query to run against the Order class.
var criteria = cac_com_example_ordermodel_Order.createCriteria("orderTakers.name = :orderClerk ORDER BY orderTaker.name ASC", 0, 10);
// Set the initial value of the orderClerk parameter.
criteria.setQueryParameter("orderClerk", "Fred%");
// Execute the query.
var orderList1 = cac_com_example_ordermodel_Order.findByCriteria(criteria);
var ref1 = orderList1.get(0);
var order1= ref1.readOrder();
// Run the query again using a different orderClerk parameter value.
criteria.setQueryParameter("orderClerk", "Ginger%");
var orderList2 = cac_com_example_ordermodel_Order.findByCriteria(criteria);
var ref2 = orderList2.get(0);
var order2= ref2.readOrder();
This example shows the use of a parameter with multiple values to find customers whose name begins with Fred, Ginger or Eric.
// Create a list of user patterns that we want to find.
var userList = Datautil.createList();
userList.add("Fred%");
userList.add("Ginger%");
userList.add("Eric%");
// Create a new Criteria object to run against the Customer class.
var criteria=cac_com_example_ordermodel_Customer.createCriteria("name IN :userList",0,100);
criteria.setQueryParameter("userList", userList);
// Execute the query.
var customerList = cac_com_example_ordermodel_Customer.findByCriteria(criteria);
var ref1 = customerList.get(0);
var customer = ref1.readCustomer();
The final example demonstrates two ways of finding customers whose orders were dispatched in August 2013:
- using a query string,
var customerList = cac_com_example_ordermodel_Customer.findByCriteria("orders.dateOfDispatch between 2013-08-01 and 2013-08-31"); - or using a query object with parameters.
var startDate = DateTimeUtil.createDate("2013-08-01"); var endDate = DateTimeUtil.createDate("2013-08-31"); var dateRange = DataUtil.createList(); dateRange.add(startDate); dateRange.add(endDate); var criteria = cac_com_example_ordermodel_Customer.createCriteria("orders.dispatchNote.dateOfDispatch between :dateRng"); criteria.setQueryParameter("dateRng", dateRange); var customerList = cac_com_example_ordermodel_Customer.findByCriteria(criteria);
