- Tengo un arraylist de structuras de tipo Pieza (clase creada por mi), tengo un bucle while que me va leyendo de una base de datos y colocando los elementos en cada campo de la clase pieza y posteriormente me añade cada clase pieza (una vez todos sus campos estan leidos) en el arraylist, usando el debug he visto mi problema es que al añadir cada pieza al arraylist no solo lo añade si no que sobreescribe todos los valores anteriormente añadidos con el pieza actual, es decir mi arraylist en cada vuelta del bucle deberia ser algo asi:
Pieza1
Pieza1 Pieza2
Pieza1 Pieza2 Pieza3
Pieza1 Pieza2 Pieza3 Pieza4
Y lo que en realidad ocurre es esto:
Pieza1
Pieza2 Pieza2
Pieza3 Pieza3 Pieza3
Pieza4 Pieza4 Pieza4 Pieza4
Por si ayuda aqui dejo el fragmento de codigo del problema con sus respectivas variables:
Código:
ResultSet rs; String tFecha; int tNumPieza; String tCara; String tTratamiento; Pieza piezaVO = new Pieza(); List<Pieza> ListaPiezas = new ArrayList<Pieza>();
Código:
Recuerdo que las lecturas y adiciones de la base de datos se hacen correctamente (está comprobado por eso tengo tantos out printin), es solo que al añadir un objeto pieza me sobreescribe tambien los anteriores y no entiendo el porque, se que tiene que ser algun fallo estupido pero no soy capaz de dar con el, un saludo y gracias ^^ while (rs.next()) { tNumPieza = rs.getInt("NumPieza"); piezaVO.setNumPieza(tNumPieza); System.out.println(piezaVO.getNumPieza()); tCara = rs.getString("Cara"); piezaVO.setCara(tCara); System.out.println(piezaVO.getCara()); tTratamiento = rs.getString("Tratamiento"); piezaVO.setTratamiento(tTratamiento); System.out.println(piezaVO.getTratamiento()); tFecha = rs.getString("Fecha"); piezaVO.setFecha(tFecha); System.out.println(piezaVO.getFecha()); System.out.println("AÑADIR REGISTRO"); ListaPiezas.add(piezaVO); for(int i=0; i<ListaPiezas.size(); i++){ System.out.println(ListaPiezas.get(i).getFecha()); System.out.println(ListaPiezas.get(i).getNumPieza()); System.out.println(ListaPiezas.get(i).getCara()); System.out.println(ListaPiezas.get(i).getTratamiento()); System.out.println(i); } }