Olá pessoal.
Venho aqui com mais um abaxi (pelo menos pra mim é 1 abacaxi).
Estou desenvolvendo uma aplicação, usando JBoss Seam e apanhando muito, muito mesmo, vim do java 1.4, struts e cia ltda e não estou acostumado com essas coisas novas, e conceitos novos … Bom, meu problema é o seguinte :
Na minha aplicação, tenho que expor em forma de lista, os produtos mais vendidos por categoria. A parte de obter os dados estava apanhando mas já resolvi.
Agora vem o problema, na hora de listar os produtos na pagina, estou usando o DataTable, e estou tendo o seguinte problema; eu mando pra pagina uma List com 5 produtos por exemplo, todas elas da mesma categoria. No entity de Produto, eu tenho um mapeamento Muitos pra 1 com categoria.
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "cat_id", nullable = false)
@NotNull
public Categories getCategoriesByCatId() {
return this.categoriesByCatId;
}
No meu session bean, eu disponibilizo a lista usando aquela anotation @DataModel
@DataModel
private List<Produtos> mostPopProdsByCategory;
Até ai beleza, mas ai vem a zica, na pagina, quando vou listar os produtos, no titulo da DataTable eu preciso colocar a qual categoria a lista de produtos ptertence, facil, eu pensei, é só acessar a categoria que esta no produto, pedir o nome e ele faz o select pra mim e coloca la no titulo … bom, mas não funcionou , o trecho de código da pagina é :
<h:panelGroup>
<rich:dataTable value="#{mostPopProdByCategory}" var="prod">
<h:column>
<f:facet name="header">
<h:outputText value="prod.categoriesByCatId.catName" />
</f:facet>
<h:outputText value="#{prod.pollName.substring(0, 30)}" />
</h:column>
</rich:dataTable>
</h:panelGroup>
Primeira coisa que eu fiz foi mudar o FetchType pra EAGER, lá no entity, não funcionou.
Então resolvi apelar no session, fiz algo como :
Iterator<Polls> it2 = mostPopProdByCategory.iterator();
while (it2.hasNext()) {
Produtos p = it2.next();
Categories c = p.getCategoriesByCatId();
p.setCategoriesByCatId(c);
System.out.println("################################# " + c.getCatName());
}
No console lista o nome da categoria, sem problemas, mas não exibe na página …
Bom, eu gostaria de saber se alguem ja teve esse tipo de problema, ou se sou eu que estou fazendo errado, estou entrando em parafuso com esse negocio …
Desde já agradeço qualquer ajuda.
Ronaldo.