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??