bem… vc pode fazer isso com criteria sim
mas nesse caso
aconselho a fazer com Query, nesses casos eu pelomenos faço com query
abs
A
andredecotia
Pensei numa forma mas achei ela pouco elegante, e também não sei se conseguiria aplicar aí, veja: if(nome != null) você direcionar para essa query
else{ você direciona para a query sem o nome só com o cpf.
A
andredecotia
maxmustang:
bem… vc pode fazer isso com criteria sim
mas nesse caso
aconselho a fazer com Query, nesses casos eu pelomenos faço com query
abs
Exemplifique para nós por favor…
Abraços,
AS.
maxmustang
acho mais simples pra fazer validação…
DatedataInicio=null;DatedataFim=null;Stringhql="from "+Preco.class.getName()+" p where ";hql=hql+"p.cliente = :pcliente";if(form.getPlano().getId()==null||form.getPlano().getId()==0){}else{hql+=" and p.plano = :pplano";}if(!form.getDtInicioString().equals("")&&!form.getDtFimString().equals("")){hql=hql+" and p.dtInicioVigencia between :pinicio and :pfim";}if(form.getConvenio().getId()!=0&&form.getConvenio().getId()!=null){hql+=" and p.plano.convenio = :pconvenio";}if(form.getItemFaturamento().getId()!=0&&form.getItemFaturamento().getId()!=null){hql=hql+" and p.itemFaturamento = :pitem";}System.out.println(hql);Queryquery=hibernateSession.createQuery(hql);if(form.getPlano().getId()==null||form.getPlano().getId()==0){}else{Planop=CadastroFacade.buscarPlanoSelecionado(hibernateSession,form.getPlano());query.setParameter("pplano",p);}if(form.getItemFaturamento().getId()!=0&&form.getItemFaturamento().getId()!=null){ItemFaturamentoi=CadastroFacade.buscarItemFaturamentoSelecionado(hibernateSession,form.getItemFaturamento());query.setParameter("pitem",i);}if(form.getConvenio().getId()!=0&&form.getConvenio().getId()!=null){Convenioconvenio=CadastroFacade.buscarConvenioSelecionado(hibernateSession,form.getConvenio());query.setParameter("pconvenio",convenio);}query.setParameter("pcliente",cliente);if(!form.getDtInicioString().equals("")&&!form.getDtFimString().equals("")){SimpleDateFormatsdf=newSimpleDateFormat("dd/MM/yyyy");dataInicio=sdf.parse(form.getDtInicioString());dataFim=sdf.parse(form.getDtFimString());Calendarcalendar=newGregorianCalendar();calendar.setTime(dataFim);calendar.add(Calendar.DAY_OF_MONTH,1);query.setParameter("pinicio",dataInicio);query.setParameter("pfim",calendar.getTime());}returnquery.list();
maxmustang
andredecotia:
Pensei numa forma mas achei ela pouco elegante, e também não sei se conseguiria aplicar aí, veja: if(nome != null) você direcionar para essa query
else{ você direciona para a query sem o nome só com o cpf.
por isso acho a Query mais simples
que a Criteria pra fazer esse tipo de filtro
alem de ter de testar cada situação pra criar uma Criteria diferente
if(nome != null)
faz isso
if(nome != null && cpf != null)
faz aquilo
V
vitorfarias
Muito obrigado pelas respostas… Vou fazer no FDS e posto aqui, vou tentar implementar no meu DAO Generico…
P
pbnf
Na área de frameworks brasileiros alguem postou uma solução de consulta generica usando hibernate, de uma olhada lá.