Contador

7 respostas
R

Boa tarde pessoal,

  • Estou tendo a seguinte dificuldade, tenho uma listagem simples vindo do meu db, gostaria de saber como consigo nessa listagem, verificar se já existe uma mesma ocorrência de um mesmo produto, se caso exista ele ir fazendo a contagem do mesmo, para saber qual produto foi mais vendido 2º, 3º assim por diante…
    alguém poderia me dar aquela força?

obs:. Estou trabalhando com Struts1 + Hibernate

Obrigado

7 Respostas

novato25

Utilize group by na consulta.

R

Ok vou tentar aqui…

R

Fala ae pessoal, uma parte está resolvida consegui o resultado esperado usando o hibernate

public List<Voto> getVoto(){
		Criteria c = session.createCriteria(Voto.class);
		c.setProjection(
				Projections.projectionList()				
				.add(Projections.rowCount())
				.add(Projections.groupProperty("produto"))				
				);
		c.addOrder(Order.asc("produto"));
		return c.list();
	}

Agora preciso apresentar esse cara em minha jsp

R

Galera ao acessar o resultado via Jsp com o forEach, eu consigo retornar os objetos sem problema, porém não estou conseguindo acessar os atributos desse objeto.
Exemplo:
Jsp

<c:forEach var="lista" items="${enquete}">				
	${lista}									
</c:forEach>

Dessa maneira obtenho os objetos:

[Ljava.lang.Object;@b48230  [Ljava.lang.Object;@cf2c09

E ao acessar os atributos

<c:forEach var="lista" items="${enquete}">				
	${lista.produto.code}									
</c:forEach>

Caused by: java.lang.NumberFormatException: For input string: "produto" org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: ServletException in '/pages/leitura.jsp': For input string: "produto"
Onde estou vacilando?

E

não seria isso

<c:forEach var="produto" items="${enquete}"> ${produto.code} </c:forEach>

na verdade não sei nem como sua lista vem,qual objeto tem nela?

R

Valeu pelo retorno, mas sua sugestão não irá funcionar tbm pois está somente trocando o nome da variavel…
Essa lista me retorna o Método para contar a quantidade de ocorrencias de um mesmo produto agrupa-los, e mostrar qual produto foi mais votado.

select
        top 1 count(*) as y0_,
        this_.produto as y1_ 
    from
        VOTO this_ 
    group by
        this_.produto 
    order by
        this_.produto asc

Retorna exatamente do jeito que preciso, porém to apanhando para mostrar isso em minha jsp(teoricamente o mais facil).

E

cara cria uma lista simples de produto pra vc aprender, depois vc melhora ela
List lista = new ArrayList();
adicione os produtos

set os dados pra jsp

request.setAtribute("lista",lista);

e mostre

<c:forEach var="produto" items="${lista}"> ${produto.seuAtributoAqui} </c:forEach>

se funcionar isso fica mais fácil pra vc entender o resto

Criado 15 de maio de 2012
Ultima resposta 15 de mai. de 2012
Respostas 7
Participantes 3