Bom dia galera…estou tentando resolver um problema que está difícil!!
A situação é a seguinte…estou tentando pegar um relatório da base de dados que tem informações de várias classes diferentes…exemplo: o nome e a data de nascimento vêm da classe pessoa…o bloco e a sala vêm da classe lugarDeProva…e asim vai!!
Então…fui aconselhado por meu professor da faculdade a trazer essas informações atravez de uma collection…como isso?..colocando os objetos de uma classe dentro de outra e setando o da última e iterando sobre isso pra pegar o que eu quero…executei tudo o que ele me falou, mas o eclipse está me retornando um JasperException…
Acho que sem ver o código ficará difícil mesmo de alguém me ajudar…e colocar todos eles aqui ficará inviável…mas vou postar minha dúvida e a resposta dele para ver se alguém consegue ver o que estou tentando fazer e uma possível ajuda!!!
----------------------------------------------------------esta é a dúvida que postei pra ele-----------------------------------------------------------------------------
Como eu faço pra pegar as informações do banco por um servlet, mas que tem informações de várias outras classes ao mesmo tempo?..Como isso?..
----------------------------------------------------------e esta a solução-------------------------------------------------------------------------------------------------
A solução para isso é vc rerpesentar as relações entre tabelas como relações entre chaves.
Suponha que a tabela Diplomacia tem três colunas A,B,C.
Coluna A representa o atributo A da classe X. A coluna B representa o atributo B da classe Y e a coluna C representa o atributo da classe Z.
e o select que vc faz é select * from Diplomacia, a relação das classes pode ser esta :
public class X{ public class Y{ public class Z{
private String A; private String B; private String C;
private Y objetoY = new Y(); private Z objetoZ = new Z(); //metodos get set
//metodos get e set //metodos get e set
} } }
Ao executar o sql acima teremos:
ResultSet rs = …;
Collection diplomacia = new ArrayList();//minha colecao
while(){rs.Next()
Z objZ = new Z();
objZ.setC(rs.getString(“C”));
Y objY = new Y();
objY.setB(rs.getString(“B”));
objY.setZ(objZ); //vc jogou Z dentro de Y
X objX = new X();
objX.setA(rs.getString(“A”));
objX.setY(objY); // vc jogou Y dentro de X, lembrando que Y possui Z
//jogando dentro da colecao
diplomacia.add(objX);
}
return diplomacia ;
//Depois no servlet que chamou o DAO acima
recupere a colecao diplomacia e armazene como atributo do request que será enviado para a próxima JSP
request.setAttribute(“d”, diplomacia);
Aí na JSP ao iterar sobre a colecao vc tem
${d.X.a} o valor do atributo a de X
${d.X.Y.b} o valor do atributo b de Y
…
No aguardo!!