Olá pessoal,
Estou com um problema com o cache de segundo nível (EhCache) quando utilizado em uma query.
O cache não funciona se eu ativar qualquer uma das linhas comentada.
Alguém sabe como resolver isso?
public List<ViewProcesso> clienteAndamento(Integer matrizId, String orderField,
Boolean orderDesc, Integer startRow, Integer MaxRows) throws Exception{
List<ViewProcesso> list = null;
try{
Calendar data = Calendar.getInstance();
data.setTime(new Date());
data.add(Calendar.DATE,- 5);
Calendar dataAbertura = Calendar.getInstance();
dataAbertura.set(Calendar.YEAR,2011);
dataAbertura.set(Calendar.MONTH,0);
dataAbertura.set(Calendar.DAY_OF_MONTH,1);
Criteria c = session.createCriteria(ViewProcesso.class,"processo");
c.add(Restrictions.eq("processo.agenda_id",matrizId));
c.add(Restrictions.eq("processo.tipo_processo", "I"));
c.add(Restrictions.isNull("processo.data_enviofaturamento"));
c.setFirstResult(startRow);
c.setMaxResults(MaxRows);
//c.add(Restrictions.gt("processo.insert_data", dataAbertura.getTime()) ); nao funciona
/*
Criterion c3 = Restrictions.isNull("processo.data_faturamento");
Criterion c4 = Restrictions.gt("processo.data_faturamento", data.getTime());
c.add(Restrictions.or(c3, c4));
*/
if(orderField.equals("") || orderField == null){
if(orderDesc == true){
c.addOrder(Order.desc("processo.nref"));
}else{
c.addOrder(Order.asc("processo.nref"));
}
}else{
if(orderDesc == true){
c.addOrder(Order.desc(orderField));
}else{
c.addOrder(Order.asc(orderField));
}
}
c.setCacheable(true);
list = c.list();
}catch (Exception e) {
new GeraFacesMessage2(FacesMessage.SEVERITY_ERROR,
"ATENÇÃO: OCORREU UM ERRO DURANTE O PROCESSAMENTO, A OPERAÇÃO NÃO FOI EFETUADA! \n",e);
}
return list;
}