Not Exists no Criteria do Hibernate?

0 respostas
A

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:
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());
agora estou tentando fazer assim em criteria:
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();
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)
Criado 15 de maio de 2007
Respostas 0
Participantes 1