Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/06/2013, 06:16
agusnovak
 
Fecha de Ingreso: abril-2013
Mensajes: 36
Antigüedad: 11 años, 7 meses
Puntos: 0
Problema al crear un arraylist de objetos leyendo de una base de datos

Mi problema es el siguiente:

- 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:
		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);
			}
		}
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 ^^