Pessoal estou reescrevendo um codigo que estava em HSQL de uma query para Criteria, mas não estou conseguindo alguem pode me ajudar, pois na Documentação do Hibernate não tem tantos exemplos:
codigo em HSQL:
[code] StringBuilder sql = new StringBuilder("from ");
sql.append("Centrocusto cc ");
sql.append("where ");
sql.append("cc.ativo = true and ");
sql.append("cc.clienteportal.grupoclientesForIdclipart.id.clienteportalByIdcliprinc.id = :idcli ");
sql.append(" and not exists (from ");
sql.append("Centrocusto cc ");
sql.append("where ");
sql.append("cc.ativo = true and ");
sql.append("cc.clienteportal.grupoclientesForIdcliprinc.id.unilateral = true and ");
sql.append("cc.clienteportal.grupoclientesForIdcliprinc.id.clienteportalByIdclipart.id = :idcli )");
Query query = this.dao.getSession().createQuery(sql.toString());
query.setInteger("idcli",usuario.getClienteportal().getId());[/code]
agora estou tentando fazer assim em criteria:[code]
DetachedCriteria subQuery = DetachedCriteria.forClass(Centrocusto.class,"cc2");
subQuery.createAlias("cc2.clienteportal", "cl2");
subQuery.createAlias("cl2.grupoclientesForIdcliprinc", "gruCli2");
subQuery.createAlias("gruCli2.clienteportalByIdclipart", "clPart2");
subQuery.add(Restrictions.eq("cc2.ativo",true));
subQuery.add(Restrictions.eq("gruCli2.unilateral",true));
subQuery.add(Restrictions.eq("clPart2.id",usuario.getClienteportal().getId()));
Criteria crit = this.dao.getSession().createCriteria(Centrocusto.class);
crit.createAlias("clienteportal", "cl");
crit.createAlias("cl.grupoclientesForIdclipart", "grCli");
crit.createAlias("grCli.clienteportalByIdcliprinc", "clPri");
crit.add(Restrictions.eq("ativo",true));
crit.add(Restrictions.eq("clPri.id",usuario.getClienteportal().getId()));
crit.add(Subqueries.notExists(subQuery));
List lista2 = crit.setCacheable(true).list();[/code]
mas não esta funcionando gerar erro:org.mentawai.core.ActionException: java.lang.NullPointerException
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getProjectedTypes(CriteriaQueryTranslator.java:318)
at org.hibernate.criterion.SubqueryExpression.toSqlString(SubqueryExpression.java:56)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:334)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:82)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:67)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1550)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
at br.com.maringa.requisicao.dao.gerenciadores.CentroCustoGerenciador.listarCcUnificadosGrupos(CentroCustoGerenciador.java:258)
at br.com.maringa.requisicao.cad.parametrizacao.PorCCAction.listarCentroCusto(PorCCAction.java:269)
at br.com.maringa.requisicao.cad.parametrizacao.PorCCAction.listarCC(PorCCAction.java:256)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.mentawai.core.InvocationChain.invoke(InvocationChain.java:302)
at org.mentawai.filter.InjectionFilter.filter(InjectionFilter.java:134)
at org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
at filtros.TotalizarStatusFilter.filter(TotalizarStatusFilter.java:18)
at org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
at org.mentawai.filter.DIFilter.filter(DIFilter.java:206)
at org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
at org.mentawai.filter.HibernateFilter.filter(HibernateFilter.java:187)
at org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
at org.mentawai.filter.IoCFilter.filter(IoCFilter.java:82)
at org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
at org.mentawai.filter.AuthenticationFilter.filter(AuthenticationFilter.java:69)
at org.mentawai.core.InvocationChain.invoke(InvocationChain.java:116)
at org.mentawai.core.Controller.invokeAction(Controller.java:633)
at org.mentawai.core.Controller.service(Controller.java:498)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119)
at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)