code: public PaginatedList<User> listUsersBySearch(String terms) {
  		PaginatedList<User> results = new PaginatedList<User>();
  		Criteria criteria = this.dao.newCriteria(User.class);
  		criteria.add(Restrictions.eq("deleted", false));
  		
  		Criteria count = this.dao.newCriteria(User.class).add(Restrictions.eq("deleted", false))
  				.setProjection(Projections.countDistinct("id"));
  
  		if (terms != null && !terms.isEmpty()) {
  			Disjunction or = Restrictions.disjunction();
  			or.add(Restrictions.like("name", "%" + terms + "%").ignoreCase());
  			criteria.add(or);
  			count.add(or);
  		}
  
  		results.setList(this.dao.findByCriteria(criteria, User.class));
  		results.setTotal((Long) count.uniqueResult());
  		return results;
  
  	}
docs: Buscar usuários de acordo com um nome.
  
  @param terms Nome buscado.
  @return PaginatedList Lista de usuários que contém o nome buscado
  em alguma parte do nome.