code: @Transactional(readOnly = true)
  	public Collection<Response> find(SearchCriteria searchCriteria) {
  		CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
  		CriteriaQuery<Response> criteriaQuery = criteriaBuilder.createQuery(Response.class);
  		Root<Response> root = criteriaQuery.from(Response.class);
  		
  		Collection<Predicate> conditions = new ArrayList<>();
  		
  		if (searchCriteria.getUser() != null) {
  			Predicate userCondition = criteriaBuilder.equal(root.get("user").get("username"), searchCriteria.getUser().getUsername());
  			conditions.add(userCondition);
  		}
  		
  		if (searchCriteria.getDetectionSystemIds() != null) {
  			Predicate detectionSystemCondition = root.get("detectionSystem").get("detectionSystemId").in(searchCriteria.getDetectionSystemIds());
  			conditions.add(detectionSystemCondition);
  		}
  
  		if (conditions.size() > 0) {
  			criteriaQuery.where(criteriaBuilder.and(conditions.toArray(new Predicate[0])));
  		}
  		
  		criteriaQuery.orderBy(criteriaBuilder.asc(root.get("timestamp")));
  
  		TypedQuery<Response> query = em.createQuery(criteriaQuery); 
  		List<Response> result = query.getResultList();
  		
  		return result;
  	}
docs: Retrive all {@link Response}s from the DB matching criteria
  
  @return {@link Collection} of {@link Response}s from the DB