Bom dia pessoal.
Gostaria de saber de voces se é a melhor maneira ou se tem outras maneiras de se emplementar um metodo de filtro por busca usando hibernate. Veja o meu dominio.
Tenho uma classe DelegacaoAcesso que esta descrita a seguir:
[code]
public class DelegacaoAcesso implements Serializable{
private Long id;
private boolean executado;
private boolean cancelado;
private Usuario usuarioDelegou;
private Usuario usuarioRecebe;
private Date dataInicial;
private Date dataFinal;
}[/code]
Eu tenho um metodo que vai efetuar uma busca a partir das propriedades que serão passadas pelo usuario.
DelegacaoAcesso filtro = new DelegacaoAcesso();
Usuario myUser = new Usuario();
Usuario toUser = new Usuario();
filtro.setUsuarioDelegou(myUser);
filtro.setUsuarioRecebe(toUser);
List<DelegacaoAcesso> delegados = service.listarDelegacoesAcesso(filtro);
Nesse meu bean que foi criado acima contem apenas duas propriedades setadas com valores, ou seja, ele deve buscar no banco todas as delegacoes que contem determinado usuarioDelegou e usuarioRecebe com valores, sem levar as outras propriedades.
O meu metodo de busca esta abaixo:
public List<DelegacaoAcesso> listarDelegacoesAcesso(final DelegacaoAcesso filtro) {
Criteria criteria = session.createCriteria(DelegacaoAcesso.class)
.add(Restrictions.eq("executado", true))
.add(Restrictions.eq("cancelado", false));
if (filtro.getUsuarioDelegou() != null) {
criteria.createAlias("usuarioDelegou", "usuarioDelegou");
criteria.add(Restrictions.eq("usuarioDelegou.id", filtro.getUsuarioDelegou().getId()));
}
if (filtro.getUsuarioRecebe() != null) {
criteria.createAlias("usuarioRecebe", "usuarioRecebe");
criteria.add(Restrictions.eq("usuarioRecebe.id", filtro.getUsuarioRecebe().getId()));
}
if (filtro.getDataInicial() != null) {
criteria.add(Restrictions.eq("dataInicial", filtro.getDataInicial()));
}
if (filtro.getDataFinal() != null)
criteria.add(Restrictions.eq("dataFinal", filtro.getDataFinal()));
return criteria.list();
}
Nele eu vejo as propriedades que estao null e adiciono o complemento da query.
Particularmente eu nao gostei desse metodo, por isso venho solicitar a ajuda de voces nessa questao.
Obrigado.