bom dia pessoal, eu preciso filtrar uns objetos do banco de dados por período, mas eu não consigo especificar no criteria apenas o semana, mês ou o ano.
Calendar calendar = Calendar.getInstance();
Date dataAtual = calendar.getTime();
if(laudoPublicado.getCliente() != null){
criteria.add(Expression.eq("cliente.idClienteFornecedor", laudoPublicado.getCliente().getIdClienteFornecedor()));
}
if(laudoPublicado.getInPeriodo() != null){
//Esse e' o filtro de dia
if(laudoPublicado.getInPeriodo() == 0){
criteria.add(Expression.eq("data", dataAtual));
}
//esse deveria ser a semana?
/* if(laudoPublicado.getInPeriodo() == 1){
laudoPublicado.setData(dataAtual);
//criteria.add(Expression.eq("data.day", laudoPublicado.getData().get(Calendar.WEEK_OF_YEAR)));
criteria.add(Expression.eq("data.year", laudoPublicado.getData().getYear()));
}*/
//esse e' o mes
if(laudoPublicado.getInPeriodo() == 2){
criteria.add(Expression.eq("data.month", calendar.get(Calendar.MONTH)));
criteria.add(Expression.eq("data.year", calendar.get(Calendar.YEAR)));
}
//e ano
if(laudoPublicado.getInPeriodo() == 3){
criteria.add(Expression.eq("data.year", calendar.get(Calendar.YEAR)));
}
e no banco a coluna se apresenta assim:
data timestamp without time zone NOT NULL,
ressaltando que a data no pojo é do tipo Date.
se alguém já passou ou sabe disso, eu agradeço a ajuda.