Olá,
Tenho um problema, eu estou usando um ArrayList e adiciono a ele uma classe que contém um atributo do tipo Hashtable, acontece que quando adiciono um novo elemento ao ArrayList todos os elementos da lista ficam iguais aos que adicionei, segue classes e retorno:
public class retCampos
{
private String NomeCampo;
private String TipoCampo;
private String Valor;
.... getters e setters...
}
Classe Dinâmica:
public class DynamicClass
{
public Hashtable<Integer,retCampos> campos = new Hashtable<Integer, retCampos>();
}
Como estou acessando:
s = db.createStatement();
rs = s.executeQuery(sql);
rsMetaData = rs.getMetaData ();
for (int i = 1; i <= rsMetaData.getColumnCount (); i++)
{
t = new retCampos();
//System.out.println (rsMetaData.getColumnName (i) +
// " of type " +
// rsMetaData.getColumnTypeName (i));
t.setNomeCampo(rsMetaData.getColumnName(i));
t.setTipoCampo(rsMetaData.getColumnTypeName(i));
//System.out.println("Inserindo Campo: " + t.getNomeCampo() + " Tipo: " + t.getTipoCampo());
todosCampos.add(t);
//unSQL.campos.put(i, t);
}
while (rs.next ())
{
unSQL = new DynamicClass();
for (int i=0; i < todosCampos.size(); i++)
{
t = new retCampos();
t = todosCampos.get(i);
indiceColuna = rs.findColumn(t.getNomeCampo());
if (t.getTipoCampo().equalsIgnoreCase("INTEGER"))
{
t.setValor(Integer.toString((rs.getInt(indiceColuna))));
} else if (t.getTipoCampo().equalsIgnoreCase("VARCHAR"))
{
t.setValor(rs.getString(indiceColuna));
}
unSQL.campos.put(i, t);
}
//System.out.println("Usuario db: " + rs.getString(1) + " Nome db: " + rs.getString(2) + " email db: " + rs.getString(3));
retSQL.add(unSQL);
imprimeSQL(unSQL);
imprimeSQL(retSQL);
}
Quando dou um print na tela segue o resultado:
UNSQL ------------------------------- UNSQL
Campo: CUSUARIO Tipo:INTEGER Valor:61
Campo: NOME Tipo:VARCHAR Valor:maria
Campo: EMAIL Tipo:VARCHAR Valor:maju@
UNSQL ------------------------------- UNSQL
RETSQL ------------------------------- RETSQL
Campo: CUSUARIO Tipo:INTEGER Valor:61
Campo: NOME Tipo:VARCHAR Valor:maria
Campo: EMAIL Tipo:VARCHAR Valor:maju@
RETSQL ------------------------------- RETSQL
UNSQL ------------------------------- UNSQL
Campo: CUSUARIO Tipo:INTEGER Valor:46
Campo: NOME Tipo:VARCHAR Valor:roberto.rabello
Campo: EMAIL Tipo:VARCHAR Valor:roberto.@
UNSQL ------------------------------- UNSQL
RETSQL ------------------------------- RETSQL
Campo: CUSUARIO Tipo:INTEGER Valor:46
Campo: NOME Tipo:VARCHAR Valor:roberto.rabello
Campo: EMAIL Tipo:VARCHAR Valor:roberto@
Campo: CUSUARIO Tipo:INTEGER Valor:46
Campo: NOME Tipo:VARCHAR Valor:roberto.rabello
Campo: EMAIL Tipo:VARCHAR Valor:roberto@
RETSQL ------------------------------- RETSQL
Já pesquisei um monte e procurei no google o dia todo e até agora não tive retorno, alguém pode me dar uma luz ?
