Collection...erro

0 respostas
leonardoteles

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!!

Criado 5 de agosto de 2010
Respostas 0
Participantes 1