Hibernate e Filtros

Olá. Eu tenho um cadastro de funcionários baseado na seguinte bean:


@Entity @org.hibernate.annotations.Entity(dynamicInsert=true,dynamicUpdate=true) 
@Table(name = "funcionario")
@FilterDef(name="procurarFuncionarioPorTipo",parameters=@ParamDef(name="tipoFuncionario",
		type="br.netsoft.beans.TipoFuncionario"),defaultCondition=":tipoFuncionario = tipo")
public class Funcionario extends Pessoa {

	private static final long serialVersionUID = 657635050835720817L;
	private Loja loja;
	private Date dataAdmissao;
	private Double comissao=0d;
	private TipoFuncionario tipo = TipoFuncionario.Administrativo;
	private Double comissaoPre=0d;
	private Double comissaoAtacado=0d;
	private Date dataDemissao;
	private String grauInstrucao;
	private PIS pis;
	private String funcao;
	private String naturalidade;
	private Double salario=0d;

	private Date horarioInicio;
	private Date horarioFinal;
	private Date horarioInicioSabado;
	private Date horarioFinalSabado;

	
	private CarteiraTrabalho ctps;

	private EstadoCivil estadoCivil;
	private Date dataNascimento;
	private TituloEleitor titulo;
	private String cpf;
	private RG rg;
	
//getters e setters ...

Sendo que o mapeamento com @Annotation está nos getters. Existe o atributo tipo que é a seguinte enum:

package br.netsoft.beans;

public enum TipoFuncionario {
	Vendedor,Balconista,
	Entregador,T\u00e9cnico,Cobrador,Indicador,Motorista,Administrativo,Todos
}

O problema é que estou tentando usar o filtro procurarFuncionarioPorTipo definido na classe funcionário, mais ele parece causar nenhum efeito. Olhem o que estou fazendo:

public List<Funcionario> getFuncionarios(TipoFuncionario tipo) throws RemoteException{

		Session sessao = null;
		try {
			sessao = factory.openSession();
			Transaction tx = sessao.beginTransaction();
			
			if (tipo!= TipoFuncionario.Todos){
				sessao.enableFilter("procurarFuncionarioPorTipo").
				setParameter("tipoFuncionario", tipo);
			}
			List<Funcionario> lista = sessao.createCriteria(Funcionario.class).list();
			for(Funcionario forn: lista)
				System.out.println(forn);

			tx.commit();
			sessao.close();
			return lista;

		} catch (HibernateException exc) {
			exc.printStackTrace();
			return null;
		}
	}

A lista que esse método retorna não está sendo filtrado. o que pode estar ocorrendo??