tente primeiro algo mais simples que retorne 2 valores como:
Query q = 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):
Query q = 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:
public class PessoasRua {
private int numeroRua;
private int totalPessoas;
// construtor que será utilizado na Query
public PessoasRua(int numero, int total) { this.numeroRua = numero; this.totalPessoas = total; }
// gets..
}
Query q = em.createQuery("SELECT new pacote.PessoasRuas(e.numero, count(p)) from Pessoa p JOIN p.endereco e GROUP BY e.rua");
String SQL_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";
Query query = session.createQuery(SQL_QUERY);
for (Iterator it = query.iterate(); it.hasNext();) {
long row = (Long) it.next();
System.out.print("Bairro: " + row);
}
session.getTransaction().commit();
session.close();[/code]
Tenho outra que tentei e que é a principal onde eu quero aplicar o resultado para popular o gráfico:
Veja:
[code]
//List pessoasEnderecoVO = new ArrayList();
DefaultPieDataset pieDataset = new DefaultPieDataset();
try {
Session sess = 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");
Query query = sess.createQuery("from PessoasEndereco in class br.com.padrao.vo.PessoasEnderecoVO group by bairroId");
Iterator list = query.iterate();
PessoasEnderecoVO pessoasEndereco = null;
while (list.hasNext()) {
pessoasEndereco = (PessoasEnderecoVO) list.next();
String a = pessoasEndereco.getBairroId().getDsbairro();
pieDataset.setValue(a, new Integer(1)); //<<<==== Aqui deveria ficar os valores agrupados.
//pieDataset.setValue(NOME DO BAIRRO, new Integer(CONTAGEM DE BAIRROS REPETIDOS));
}
JFreeChart chart = ChartFactory.createPieChart(
"Gráfico de Pizza", // Title
pieDataset, // Dataset
true, // Show legend
true, // Use tooltips
false // Configure chart to generate URLs?
);
try {
PiePlot P = (PiePlot) chart.getPlot();
ChartFrame frame = new ChartFrame("Pie Chart", chart);
frame.setVisible(true);
frame.setSize(900, 600);
} catch (Exception e) {
System.out.println("Ocorreu um problema ao executar JFreeChart" + e);
}
} catch (Exception e) {
System.out.println("lista papel: " + e);
//return (null);
}[/code]
Se puder me ajudar nesta segunda classe eu agradeço, mas se der me mostre por gentileza em qualquer uma.