public Collection getCurrentOutagesByRange(Integer offset, Integer limit, String orderProperty, String direction) { OnmsCriteria criteria = new OnmsCriteria(OnmsOutage.class); criteria.setFirstResult(offset); criteria.setMaxResults(limit); criteria.createAlias("monitoredService", "monitoredService"); criteria.setFetchMode("monitoredService", FetchMode.JOIN); criteria.createAlias("monitoredService.ipInterface", "ipInterface"); criteria.setFetchMode("ipInterface", FetchMode.JOIN); criteria.createAlias("monitoredService.serviceType", "serviceType"); criteria.setFetchMode("serviceType", FetchMode.JOIN); criteria.createAlias("ipInterface.node", "node"); criteria.setFetchMode("node", FetchMode.JOIN); criteria.add(Restrictions.isNull("ifRegainedService")); criteria.addOrder(Order.asc("node.label")); criteria.addOrder(Order.asc("ipInterface.ipAddress")); criteria.addOrder(Order.asc("serviceType.name")); return m_dao.findMatching(criteria); }