Olá pessoal,
Estou tomando uma surra aqui com uma criteria:
Session sessao = HibernateUtil.getInstance().getSession();
Criteria criteria = sessao.createCriteria(Lote.class, "lote");
criteria.add(Restrictions.between("lote.dtEncaminha", dtInicial, dtFinal));
criteria.setProjection(Projections.groupProperty("lote.dtEncaminha"));
criteria.createAlias("creditos", "creditos");
criteria.createAlias("creditos.situacoes", "situacoes");
Disjunction disjunction = Restrictions.disjunction();
for (SituacaoCreditoPublicoOrigemExterna situacao : situacoes) {
disjunction.add(Restrictions.eq("situacoes.id", situacao.getId()));
}
criteria.add(disjunction);
criteria.addOrder(Order.asc("lote.dtEncaminha"));
return criteria.list();
Usando Restrictions.between + Projections.groupProperty + DATA=como um período dá ERRO:
[color=darkred]java.lang.ClassCastException: java.sql.Timestamp cannot be cast to teste.bean.Lote[/color]
Quando uso:
Session sessao = HibernateUtil.getInstance().getSession();
Criteria criteria = sessao.createCriteria(Lote.class, "lote");
criteria.add(Restrictions.eq("lote.dtEncaminha", dtEncaminha));
criteria.setProjection(Projections.groupProperty("lote.dtEncaminha"));
criteria.createAlias("creditos", "creditos");
criteria.createAlias("creditos.situacoes", "situacoes");
Disjunction disjunction = Restrictions.disjunction();
for (SituacaoCreditoPublicoOrigemExterna situacao : situacoes) {
disjunction.add(Restrictions.eq("situacoes.id", situacao.getId()));
}
criteria.add(disjunction);
criteria.addOrder(Order.asc("lote.dtEncaminha"));
return criteria.list();
Funciona! Até mesmo o Between se eu usar uma mesma data ele funciona estranhamente!
Não entendo