Tenho um determinado método, que pega um ResultSet preenchido, e popula uma ArrayList com todos os resultados desse ResultSet.
Essa ArrayList só recebe um determinado objeto (Obra) que tem como agregados 2 outros objetos(RegiaoAdministrativa e Usuario).
Ele “seta” todas as variaveis nativas do objeto Obra normalmente, porém, ao “setar” os objetos agregados, eles são gravados um em
cima do outro.
Vejam o código:
private void construirLista() throws SQLException{
while(rs.next()){
Obra o = new Obra();
o.setIdObra(rs.getInt("id_obra"));
o.getRegiaoAdministrativa().setIdRegiaoAdministrativa(rs.getInt("id_regiao_administrativa"));
o.setRegiaoAdministrativa(rafac.listarPorId(o.getRegiaoAdministrativa()));
o.getUsuario().setIdUsuario(rs.getInt("id_usuario"));
o.setUsuario(ufac.listarPorId(o.getUsuario()));
o.setNumContrato(rs.getString("num_contrato"));
o.setNumProcesso(rs.getString("num_processo"));
o.setOrgaoResponsavel(rs.getString("orgao_responsavel"));
o.setEmpresaContratada(rs.getString("empresa_contratada"));
o.setObjetoContrato(rs.getString("objeto_contrato"));
o.setEnderecoObra(rs.getString("endereco_obra"));
o.setInicioContrato(f.formataDataView(rs.getString("inicio_contrato")));
o.setFinalContrato(f.formataDataView(rs.getString("final_contrato")));
o.setRepresentanteEmpresa(rs.getString("representante_empresa"));
o.setRepresentanteOrgao(rs.getString("representante_orgao"));
o.setNumDodf(rs.getInt("num_dodf"));
o.setDiaDodf(rs.getInt("dia_dodf"));
o.setPaginaDodf(rs.getInt("pagina_dodf"));
listaObras.add(o);
System.out.println(listaObras.get(0).getRegiaoAdministrativa().getNomeRegiaoAdministrativa());
}
}
No console do TomCat, eu tenho o seguinte retorno dos prints executados logo após o “add” à lista:
Sobradinho
Nucleo Bandeirante
Lago Sul
Brasilia
Sao Sebastiao
Candangolandia
Como podem ver, eu pedi para ser gerado em console sempre o nome da Regiao Administrativa do primeiro indice da lista, mas à cada loop,
esse valor muda, ele é gravado um em cima do outro.
Alguém poderia me dar uma luz?