Fórum Restrição Criteria #500701
10/11/2014
0
Segue abaixo as restrições que estão sendo usada para gerar o relatório
@SuppressWarnings("unchecked")
public Collection<SuporteSolicitacao> pegarSolicitacoesSemNotasPorUsuario(int usuarioId) throws Exception{
Criteria criteria = session.createCriteria(SuporteSolicitacao.class)
.add(Restrictions.eq("solicitante.id", usuarioId))
.add(Restrictions.eq("nota", ENOTA.NAO_VOTADO))
.add(Restrictions.eq("finalizada", SIM_NAO.SIM));
return criteria.list();
}
Obrigado!
Wagner Barbosa
Curtir tópico
+ 0Posts
10/11/2014
Wanderson Cortes
.add(Restrictions.between("data", dataInicial, dataFinal);Gostei + 0
10/11/2014
Wagner Barbosa
Também expliquei um pouco diferente...
O que preciso, seria isso:
Eu tenho uma data de finalização de chamado (data_finalizacao), preciso que mostre neste relatório, apenas os chamados que sejam iguais à data (data_finalizacao) ou abaixo de 30 dias... Exemplo, eu finalizei um chamado hoje. Então no relatório, só irá mostrar os chamados de hoje (10/11/2014) até (10/10/2014).
Gostei + 0
10/11/2014
Ronaldo Lanhellas
Também expliquei um pouco diferente...
O que preciso, seria isso:
Eu tenho uma data de finalização de chamado (data_finalizacao), preciso que mostre neste relatório, apenas os chamados que sejam iguais à data (data_finalizacao) ou abaixo de 30 dias... Exemplo, eu finalizei um chamado hoje. Então no relatório, só irá mostrar os chamados de hoje (10/11/2014) até (10/10/2014).
Pode tentar com o ge(Maior que) e lt (Meno que)
criteria.add(Restrictions.ge("data_finalizacao", inicioData));
criteria.add(Restrictions.lt("data_finalizacao", fimData));`
Gostei + 0
11/11/2014
Wagner Barbosa
Tentei dessa forma, só q não deu certo ainda...
@SuppressWarnings("unchecked")
public Collection<SuporteSolicitacao> pegarSolicitacoesSemNotasPorUsuario(int usuarioId) throws Exception{
Calendar dataMenos1Mes = new GregorianCalendar();
dataMenos1Mes.add(dataMenos1Mes.MONTH, -1);
Criteria criteria = session.createCriteria(SuporteSolicitacao.class)
.add(Restrictions.eq("solicitante.id", usuarioId))
.add(Restrictions.eq("nota", ENOTA.NAO_VOTADO))
.add(Restrictions.ge("data_Finalizacao", dataMenos1Mes ))
.add(Restrictions.eq("finalizada", SIM_NAO.SIM));
return criteria.list();
}
Gostei + 0
11/11/2014
Ronaldo Lanhellas
Gostei + 0
11/11/2014
Wagner Barbosa
Como eu disse, sou iniciante... pode ser alguma coisa simples...
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Exception while invoking action SolicitacaoAction: null / java.lang.reflect.InvocationTargetException / java.util.GregorianCalendar cannot be cast to java.util.Date / java.lang.ClassCastException
org.mentawai.core.Controller.service(Controller.java:661)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.lang.ClassCastException: java.util.GregorianCalendar cannot be cast to java.util.Date
org.hibernate.type.TimestampType.toString(TimestampType.java:55)
org.hibernate.type.NullableType.nullSafeToString(NullableType.java:93)
org.hibernate.type.NullableType.nullSafeSet(NullableType.java:140)
org.hibernate.type.NullableType.nullSafeSet(NullableType.java:116)
org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1707)
org.hibernate.loader.Loader.bindParameterValues(Loader.java:1678)
org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1563)
org.hibernate.loader.Loader.doQuery(Loader.java:673)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
org.hibernate.loader.Loader.doList(Loader.java:2220)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
org.hibernate.loader.Loader.list(Loader.java:2099)
org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
fiemt.ctinf.suporte.solicitacao.dao.SolicitacaoDao.pegarSolicitacoesSemNotasPorUsuario(SolicitacaoDao.java:361)
fiemt.ctinf.suporte.solicitacao.service.SolicitacaoService.pegarSolicitacoesSemNotasPorUsuario(SolicitacaoService.java:160)
fiemt.ctinf.suporte.solicitacao.action.SolicitacaoAction.procurarPendetesAvaliacao(SolicitacaoAction.java:377)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:601)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:299)
org.mentawai.filter.InjectionFilter.filter(InjectionFilter.java:154)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
org.mentawai.filter.AuthorizationFilter.filter(AuthorizationFilter.java:334)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
org.mentawai.filter.AuthenticationFilter.filter(AuthenticationFilter.java:125)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
fiemt.ctinf.util.DataExtensoFilter.filter(DataExtensoFilter.java:21)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
org.mentawai.filter.HibernateFilter.filter(HibernateFilter.java:187)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
org.mentawai.filter.AutoWiringFilter.filter(AutoWiringFilter.java:110)
org.mentawai.filter.DIFilter.filter(DIFilter.java:68)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
org.mentawai.filter.IoCFilter.filter(IoCFilter.java:83)
org.mentawai.core.InvocationChain.invoke(InvocationChain.java:139)
org.mentawai.core.Controller.invokeAction(Controller.java:759)
org.mentawai.core.Controller.service(Controller.java:624)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.
Apache Tomcat/6.0.35
Gostei + 0
11/11/2014
Ronaldo Lanhellas
Veja o erro:
java.util.GregorianCalendar cannot be cast to java.util.Date / java.lang.ClassCastException
A solução é você capturar a data do GregorianCalendar e passar para o criteria, no caso pode usar o between mesmo como estava fazendo logo acima.
Gostei + 0
12/11/2014
Wagner Barbosa
Ta funcionando agora!!
Ficou assim então:
@SuppressWarnings("unchecked")
public Collection<SuporteSolicitacao> pegarSolicitacoesSemNotasPorUsuario(int usuarioId) throws Exception{
Calendar dataMenos1Mes = new GregorianCalendar();
dataMenos1Mes.add(dataMenos1Mes.MONTH, -1);
Criteria criteria = session.createCriteria(SuporteSolicitacao.class)
.add(Restrictions.eq("solicitante.id", usuarioId))
.add(Restrictions.eq("nota", ENOTA.NAO_VOTADO))
.add(Restrictions.ge("dataFinalizacao", dataMenos1Mes.getTime() ))
.add(Restrictions.eq("finalizada", SIM_NAO.SIM));
return criteria.list();
}
Obrigado!!
Gostei + 0
12/11/2014
Ronaldo Lanhellas
Disponha.
Gostei + 0
12/11/2014
Ronaldo Lanhellas
Disponha.
Gostei + 0
12/11/2014
Ronaldo Lanhellas
Disponha.
Gostei + 0
12/11/2014
Ronaldo Lanhellas
Disponha.
Gostei + 0
12/11/2014
Ronaldo Lanhellas
Disponha.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)