tente primeiro algo mais simples que retorne 2 valores como:
Queryq=em.createQuery("SELECT p.nome, p.cpf FROM Pessoa as p");List<Object[]>l2=q.getResultList();for(Object[]c:l2){System.out.println(c[0]+""+c[1]);}
Depois tente da forma que vc deseja (não posso testar agora, mas creio que seja assim):
Queryq=em.createQuery("SELECT e.numero, count(p) from Pessoa p JOIN p.endereco e GROUP BY e.rua");// recupere como no exemplo anterior
Se preferir, podes criar um bean auxiliar:
publicclassPessoasRua{privateintnumeroRua;privateinttotalPessoas;// construtor que será utilizado na QuerypublicPessoasRua(intnumero,inttotal){this.numeroRua=numero;this.totalPessoas=total;}// gets..}Queryq=em.createQuery("SELECT new pacote.PessoasRuas(e.numero, count(p)) from Pessoa p JOIN p.endereco e GROUP BY e.rua");
E
ELIAS_COUTINHO
Olá Rock.
Fiz seu exemplo e deu erro justamente em getEntityManager() com a mensagem "cannot find symbol"
Contudo estou postando a minha classe que esta retornando somente o group by.
SessionFactorysessionFactory=newAnnotationConfiguration().configure().buildSessionFactory();Sessionsession=sessionFactory.openSession();session.beginTransaction();StringSQL_QUERY="select count(bairroId) as qde from PessoasEndereco in class br.com.padrao.vo.PessoasEnderecoVO group by bairroId";//String SQL_QUERY = "select count(bairroId) as qde from PessoasEndereco in class br.com.padrao.vo.PessoasEnderecoVO group by bairroId";Queryquery=session.createQuery(SQL_QUERY);for(Iteratorit=query.iterate();it.hasNext();){longrow=(Long)it.next();System.out.print("Bairro: "+row);}session.getTransaction().commit();session.close();
Tenho outra que tentei e que é a principal onde eu quero aplicar o resultado para popular o gráfico:
Veja:
//List<PessoasEnderecoVO> pessoasEnderecoVO = new ArrayList();DefaultPieDatasetpieDataset=newDefaultPieDataset();try{Sessionsess=HibernateUtil.getInstance().getSession();//Query query = sess.createQuery("select sum(bairroId) as conta, bairroId from PessoasEndereco in class br.com.padrao.vo.PessoasEnderecoVO group by bairroId");Queryquery=sess.createQuery("from PessoasEndereco in class br.com.padrao.vo.PessoasEnderecoVO group by bairroId");Iteratorlist=query.iterate();PessoasEnderecoVOpessoasEndereco=null;while(list.hasNext()){pessoasEndereco=(PessoasEnderecoVO)list.next();Stringa=pessoasEndereco.getBairroId().getDsbairro();pieDataset.setValue(a,newInteger(1));//<<<==== Aqui deveria ficar os valores agrupados.//pieDataset.setValue(NOME DO BAIRRO, new Integer(CONTAGEM DE BAIRROS REPETIDOS));}JFreeChartchart=ChartFactory.createPieChart("Gráfico de Pizza",// TitlepieDataset,// Datasettrue,// Show legendtrue,// Use tooltipsfalse// Configure chart to generate URLs?);try{PiePlotP=(PiePlot)chart.getPlot();ChartFrameframe=newChartFrame("Pie Chart",chart);frame.setVisible(true);frame.setSize(900,600);}catch(Exceptione){System.out.println("Ocorreu um problema ao executar JFreeChart"+e);}}catch(Exceptione){System.out.println("lista papel: "+e);//return (null);}
Se puder me ajudar nesta segunda classe eu agradeço, mas se der me mostre por gentileza em qualquer uma.