Mto estranho o que ta acontecendo…
Fiz um form de pesquisa e to passando os campos por Ajax pra um servlet… Enfim…
Eu uso Jquery … datepicker pra escolher a data e depois trato o valor pra gerar um Date dessa maneira abaixo…
Olha q loco… se eu der um print no ano, mes, dia do meu objeto date (getYear…getMonth…) ta tudo certinho… sem erro…
Agora… tava estranhando que não voltava resultado nenhum e então ativei o log de queries do mysql… Daí vem o porém… Se eu dou post numa data 01.10.2009 no log a data ta vindo como 01.11.2009… 0o!!! Já testei de tudo… O que eu faço??
String nome_s = request.getParameter("nome_s");
String dpto = request.getParameter("dpto");
String nome_b = request.getParameter("nome_b");
String rg_b = request.getParameter("rg_b");
String data = request.getParameter("data");
Date date = null;
if(data.contains("/") && !data.isEmpty()){
StringTokenizer t = new StringTokenizer(data, "/");
int mes = Integer.parseInt(t.nextToken());
int dia = Integer.parseInt(t.nextToken());
int ano = Integer.parseInt(t.nextToken());
GregorianCalendar gc = new GregorianCalendar();
gc.setLenient(false);
gc.set(GregorianCalendar.YEAR, ano);
gc.set(GregorianCalendar.MONTH, mes);
gc.set(GregorianCalendar.DATE, dia);
date = gc.getTime();
}
List l = new DocumentDAO().doSearch(id_doc, nome_s, dpto, nome_b, rg_b, date);
Log Mysql para data postada 16.11.2009
4 Execute [1] select this_.id as id1_1_, this_.axalant as axalant1_1_, this_.cadim as cadim1_1_, this_.ccd as ccd1_1_, this_.citrix as citrix1_1_, this_.data_criacao as data6_1_1_, this_.datamace as datamace1_1_, this_.dir1 as dir8_1_1_, this_.dir1_tipo as dir9_1_1_, this_.dir2 as dir10_1_1_, this_.dir2_tipo as dir11_1_1_, this_.dir3 as dir12_1_1_, this_.dir3_tipo as dir13_1_1_, this_.dpt_g as dpt14_1_1_, this_.dpt_s as dpt15_1_1_, this_.gf_alliance as gf16_1_1_, this_.hora_criacao as hora17_1_1_, this_.id_status as id44_1_1_, this_.internet as internet1_1_, this_.mail_g as mail19_1_1_, this_.mail_s as mail20_1_1_, this_.minitab as minitab1_1_, this_.nome_g as nome22_1_1_, this_.nome_s as nome23_1_1_, this_.obs as obs1_1_, this_.orial as orial1_1_, this_.orial_premium as orial26_1_1_, this_.outlook_e as outlook27_1_1_, this_.outlook_i as outlook28_1_1_, this_.outros as outros1_1_, this_.outros_desc as outros30_1_1_, this_.ramal_g as ramal31_1_1_, this_.ramal_s as ramal32_1_1_, this_.rede as rede1_1_, this_.revogacao as revogacao1_1_, this_.ronda_acesso as ronda35_1_1_, this_.ronda_ponto as ronda36_1_1_, this_.sap_just as sap37_1_1_, this_.sap_perfil as sap38_1_1_, this_.sap_tipo as sap39_1_1_, this_.sap_trans as sap40_1_1_, this_.sawluz as sawluz1_1_, this_.sintel_cli as sintel42_1_1_, this_.sintel_fornec as sintel43_1_1_, statusdocu2_.id as id3_0_, statusdocu2_.desc as desc3_0_, statusdocu2_.msg_mail as msg3_3_0_ from document this_ inner join status_documento statusdocu2_ on this_.id_status=statusdocu2_.id where this_.data_criacao='2009-12-16'
método do DAO que faz o Criteria
public java.util.List doSearch(long id_doc, String nome_s,String dpto,String nome_b,String rg_b,Date date){
Session session = factory.openSession();
Criteria criteria = session.createCriteria(Document.class);
if(id_doc != 0){
criteria.add(Restrictions.eq("id",id_doc));
}
if(!nome_s.isEmpty()){
criteria.add(Restrictions.like("nomeS", "%" + nome_s + "%"));
}
if(!dpto.isEmpty()){
criteria.add(Restrictions.eq("dptS", dpto));
}
if(date!= null){
System.out.println(date.getMonth());
criteria.add(Restrictions.eq("dataCriacao", date));
}
if(!nome_b.isEmpty() || !rg_b.isEmpty()){
criteria.setFetchMode("beneficiado", FetchMode.JOIN);
if(!nome_b.isEmpty()){
criteria.add(Restrictions.like("nome","%" + nome_b + "%"));
}
if(!rg_b.isEmpty()){
criteria.add(Restrictions.eq("rg",rg_b));
}
}
return criteria.list();
}
