[quote=felipempantoja]Cara, eu sugiro fazer algo mais ou menos assim no teu método que monta a criteria:
[code]@SuppressWarnings(“unchecked”)
public List<Audiencia> pesquisaAudiencias(Date data_audiencia, Date data_peticao, String anotacoes, Processo processo) {
Criteria c = session.createCriteria(Audiencia.class);
if(data_audiencia != null) {
c.add(Restrictions.between("data_audiencia", DateUtils.lowDateTime(data_audiencia), DateUtils.highDateTime(data_audiencia)));
}
if(data_peticao != null) {
c.add(Restrictions.between("data_peticao", DateUtils.lowDateTime(data_peticao), DateUtils.highDateTime(data_peticao)));
}
c.add(Restrictions.ilike("anotacoes", "%" + anotacoes + "%"));
c.add(Restrictions.ilike("processo", "%" + processo + "%"));
c.addOrder(Order.asc("data_audiencia"));
return c.list();
}[/code]
Se vc estiver tentando verificar se o processo no banco é igual ao processo que vc está passando por parâmetro, o ilike não vai funcionar, pq processo é um objeto da sua regra de negócios e não uma String (a não ser que vc tenha implementado o toString dele, mas não tenho certeza se funciona dessa maneira), o ideal seria o eq (equals):
Mude de:
Para:
Felipe, meu amigo, segui a sua sugestão e tive o mesmo problema…
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field br.com.swej.estrutura.Processo.id to java.lang.String
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:37)
at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorImpl.java:18)
at java.lang.reflect.Field.get(Field.java:358)
at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:32)
... 70 more
Eita negocio complicado…