Datatable com Criteria.list

Galera, tenho uma tabela Funcionario onde eu exibo todos os funcionarios numa datatable
Soh que no meu DAO, no metodo de trazer a lista de funcionarios (Utilizando Criteria) esta trazendo uma qt diferente da que esta no banco de dados.

Classe funcionario:

@Entity
public class Funcionario
{
	........

	@OneToMany(mappedBy="funcionario", fetch=FetchType.EAGER)
	@Cascade(CascadeType.ALL)
	private List<Ponto> pontos = new ArrayList<Ponto>();

        .........

Classe Ponto:

@Entity
public class Ponto 
{
        ...........

	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="id_funcionario", nullable=false)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.SAVE_UPDATE)
	private Funcionario funcionario;

        ...........

Linha do datatable:

       <rich:dataTable id="table" width="100%" var="fc" value="#{funcionarioTableMBean.list}" binding="#{funcionarioTableMBean.objLinha}" onRowMouseOver="this.style.backgroundColor='#CCC'" onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'">

Metodo getList():

    public List<Funcionario> getList() {
		if(nomeBusca != "")
			buscaFuncionario();
		else
			getTodosOsFuncionarios();
		return list;
	}

Metodo getTodosOsFuncionarios():

    public String getTodosOsFuncionarios(){
		FuncionarioDAO dao = new FuncionarioDAO();
		list = dao.list();
		HibernateUtil.closeSession();
		return null;
	}

E finalmente o DAO:

        @SuppressWarnings("unchecked")
	public List<T> list() {
		try {
			System.out.println(clazz.getName());
			Criteria busca = HibernateUtil.getSession().createCriteria(this.clazz);
			System.out.println(busca.list().size());
			return busca.list();  
		} catch (RuntimeException re) {	          
			throw re;
		}
	}

Quando eu adiciono um PONTO no FUNCIONARIO ele executa o metodo de ADICIONARPONTO e reRenderiza a datatable que exibe todos os funcionarios da tabela Funcionario
atravez desse metodo List do DAO

soh que na minha tabela soh tem 2 funcionarios por exemplo
e ele nao sei porque me retorna funcionarios repetidos de acordo com a qt de pontos…
Alguem pode me explicar ?

se eu faco -->> Criteria busca = HibernateUtil.getSession().createCriteria(this.clazz);
ele nao deveria retornar apenas o que tem na tabela Funcionario ?

porque ele esta repetindo de acordo com os pontos que vou adicionando ?

Exemplo:

tenho 2 funcionarios na tabela Funcionario

o primeiro tem 3 pontos
o segundo tem 2

entao ele ta exibindo 5 Funcionarios na tabela, invez de 2

Agradeço desde já…