[RESOLVIDO] DISTINCT em um único campo

boa tarde,

eu gostaria de fazer uma busca na tabela e retornar apenas um campo (DISTINCT(campo), mas não estou conseguindo o mais perto que cheguei foi assim:

    public List<Holerite> listaEntidade() {
        String sql = "SELECT DISTINCT tbl FROM Holerite tbl"
                + " WHERE tbl.cpf = :cpf"
                + " GROUP BY tbl.holeritePK.entidade";
        Map<String, Object> parametros = new HashMap<String, Object>();
        parametros.put("cpf", UsuarioControle.usuarioLogado.getCpf().replaceAll("[\\.|\\-]", ""));
        return super.listaTodos(sql, parametros, 0);
    }
    public List<T> listaTodos(String sql, Map<String, Object> parametros, Integer limite) {
        List<T> lista = null;
        try {
            Query query = emCadastro.createQuery(sql);

            if (parametros != null && !parametros.isEmpty()) {
                queryParametros(query, parametros);
            }

            if (limite > 0) {
                query.setMaxResults(limite);
            }

            lista = query.getResultList();
        } catch (Exception e) {
            e.getMessage();
        }
        return lista;
    }

eu quero retornar esses valores em um selectOneMenu teria alguma forma melhor de fazer isso pois da maneira que esta nao funciona ele traz varias vezes o mesmo registro

Por favor, ao postar tópicos, NÃO DEIXE O TÍTULO INTEIRO EM LETRAS MAIÚSCULAS.

E o que ele deveria fazer com os demais dados?

Por exemplo, digamos que ele retorne:
Nome: Fulano de Tal Cpf: 12345 Holerite: 09/2012
Nome: Fulano de Tal Cpf: 12345 Holerite: 10/2012

E o distinct seja sobre o CPF. O que deveria acontecer com o campo do holerite?

eu queria trazer em um SelectOneMenu apenas um campo para depois filtrar em um dataTable e mostrar apenas os dados de direito da pessoa, sendo que ela poderia nesse caso com o filtro visualizar holerites de outras competencia

Então faz o SELECT em um campo só, ué. Se você só precisa do CPF

E o resto fica igual.

mas quando eu troco meu sql ele da erro

/servidor/holerite.xhtml @27,138 itemValue="#{entidade.holeritePK.entidade}": The class ‘java.lang.String’ does not have the property ‘holeritePK’.

    public List<Holerite> listaEntidade() {
        String sql = "SELECT DISTINCT(tbl.holeritePK.entidade)  FROM Holerite tbl"
                + " WHERE tbl.cpf = :cpf";
        Map<String, Object> parametros = new HashMap<String, Object>();
        parametros.put("cpf", UsuarioControle.usuarioLogado.getCpf().replaceAll("[\\.|\\-]", ""));
        return super.listaTodos(sql, parametros, 0);
    }

eu precisaria criar um List para jogar somente este campo?

Consegui resolver da seguinte forma:

    public List<SelectItem> listaEntidade() {
        String sql = "SELECT DISTINCT(tbl.holeritePK.entidade) AS entidade FROM Holerite tbl"
                + " WHERE tbl.cpf = :cpf";
        Map<String, Object> parametros = new HashMap<String, Object>();
        parametros.put("cpf", UsuarioControle.usuarioLogado.getCpf().replaceAll("[\\.|\\-]", ""));
        return super.listaFiltro(sql, parametros, 0);
    }