@Override public Pair<List<? extends PhysicalNetworkServiceProvider>, Integer> listNetworkServiceProviders(Long physicalNetworkId, String name, String state, Long startIndex, Long pageSize) { Filter searchFilter = new Filter(PhysicalNetworkServiceProviderVO.class, "id", false, startIndex, pageSize); SearchBuilder<PhysicalNetworkServiceProviderVO> sb = _pNSPDao.createSearchBuilder(); SearchCriteria<PhysicalNetworkServiceProviderVO> sc = sb.create(); if (physicalNetworkId != null) { sc.addAnd("physicalNetworkId", Op.EQ, physicalNetworkId); } if (name != null) { sc.addAnd("providerName", Op.EQ, name); } if (state != null) { sc.addAnd("state", Op.EQ, state); } Pair<List<PhysicalNetworkServiceProviderVO>, Integer> result = _pNSPDao.searchAndCount(sc, searchFilter); return new Pair<List<? extends PhysicalNetworkServiceProvider>, Integer>(result.first(), result.second()); }