error MUY raro con Iterator

27 views
Skip to first unread message

Laura

unread,
Nov 7, 2008, 7:32:06 AM11/7/08
to JavaSOS
Hola, cómo estás? Les cuento que estoy haciendo una consulta con una
namedquery que me devuelve una lista de resultados, y quiero recorrer
esa lista con un iterator, para pasar la información que necesito a
una nueva lista (pero de clases comunes y ya no de beans de sesión),
pero por algún motivo recorre solo los primero elementos de la lista y
después me tira un error de puntero nulo.
¿Alguna vez les paso? ¿Tienen idea de a que puede deberse?

Saludos y desde ya gracias.


Laura.-





el código:
public List<DatosEmpleado> listarEmpleados() {
System.err.println("public List<DatosEmpleado>
listarEmpleados()");
List <DatosEmpleado> resultado=new ArrayList();
List<Empleado> lista = null;
try{
javax.persistence.Query query =
em.createNamedQuery("Empleado.findTodos");
lista= query.getResultList();
System.err.println("la lista de beans tiene
"+lista.toString());

Iterator iteracion = lista.iterator();

while(iteracion.hasNext()){
Empleado empleadito=(Empleado) iteracion.next();
DatosEmpleado elEmpleado =new DatosEmpleado();
elEmpleado.setNombre(empleadito.getNombre());
elEmpleado.setApellido(empleadito.getApellido());
elEmpleado.setDireccion(empleadito.getApellido());
elEmpleado.setDni(empleadito.getDni());

elEmpleado.setFechaIngreso(empleadito.getFechaIngreso());
elEmpleado.setId(empleadito.getIdEmpleado());
elEmpleado.setIdTarjeta(empleadito.getIdTarjeta());

elEmpleado.setIdTurnoFecha(empleadito.getIdTurno());
elEmpleado.setTelefono(empleadito.getTelefono());

elEmpleado.setTipoEmpleado(empleadito.getTipoEmpleado());

resultado.add(elEmpleado);

System.err.println("la lista agrega el empleado "
+elEmpleado.toString());
}

System.err.println("la lista que sale por try tiene: "
+resultado.toString());
return resultado;

}catch(Exception e){
System.err.println("el error es: " + e.getMessage());
System.err.println(e.toString());
System.err.println("la lista que sale por catch tiene: "
+resultado.toString());
return resultado;
}
}


el output del glassfish:
public List<DatosEmpleado> listarEmpleados()
TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b04-fcs
(04/17/2008))
Server: unknown
file:/home/laura/NetBeansProjects/Storm/Storm-ejb/build/jar/-Storm-
ejbPU login successful
la lista de beans tiene [datos.Empleado[idEmpleado=1],
datos.Empleado[idEmpleado=15], datos.Empleado[idEmpleado=14],
datos.Empleado[idEmpleado=8], datos.Empleado[idEmpleado=16],
datos.Empleado[idEmpleado=6], datos.Empleado[idEmpleado=7],
datos.Empleado[idEmpleado=18], datos.Empleado[idEmpleado=19],
datos.Empleado[idEmpleado=17], datos.Empleado[idEmpleado=12],
datos.Empleado[idEmpleado=20], datos.Empleado[idEmpleado=21],
datos.Empleado[idEmpleado=22]]
la lista agrega el empleado utilidades.DatosEmpleado@32477c94
la lista agrega el empleado utilidades.DatosEmpleado@7343f255
la lista agrega el empleado utilidades.DatosEmpleado@71dae591
la lista agrega el empleado utilidades.DatosEmpleado@5a15ccfc
la lista agrega el empleado utilidades.DatosEmpleado@4d44e298
la lista agrega el empleado utilidades.DatosEmpleado@657890c9
la lista agrega el empleado utilidades.DatosEmpleado@4e69b02a
el error es: null
java.lang.NullPointerException
la lista que sale por catch tiene: [utilidades.DatosEmpleado@32477c94,
utilidades.DatosEmpleado@7343f255, utilidades.DatosEmpleado@71dae591,
utilidades.DatosEmpleado@5a15ccfc, utilidades.DatosEmpleado@4d44e298,
utilidades.DatosEmpleado@657890c9, utilidades.DatosEmpleado@4e69b02a]

Pablo Ruggia

unread,
Nov 7, 2008, 7:44:40 AM11/7/08
to jav...@googlegroups.com
Pega en el mail el stack trace, si no es imposible adivinar.

Saludos !

2008/11/7 Laura <lau.i...@gmail.com>

Leandro Spadaro

unread,
Nov 7, 2008, 7:52:49 AM11/7/08
to (Grupo Java Google) Lista
 
No tiene sentido que hagas un cast a empleado en el while por que ya le estas diciendo con el Generic que la lista solo tendra objetos de tipo Empledao
podrias usar el "for" nuevo de la version jdk 1.5, quizas el error sea por eso.
 
saludos.
Leo.
 
public List<DatosEmpleado> listarEmpleados() {


   List <DatosEmpleado> resultado=new ArrayList();
   List<Empleado> lista = null;
 
   try{
 
      javax.persistence.Query query = em.createNamedQuery("Empleado.findTodos");
      lista= query.getResultList();

    

      for (Empleado empleadito : lista) {

         DatosEmpleado elEmpleado =new DatosEmpleado();
         elEmpleado.setNombre(empleadito.getNombre());
         elEmpleado.setApellido(empleadito.getApellido());
         elEmpleado.setDireccion(empleadito.getApellido());
         elEmpleado.setDni(empleadito.getDni());
         elEmpleado.setFechaIngreso(empleadito.getFechaIngreso());
         elEmpleado.setId(empleadito.getIdEmpleado());
         elEmpleado.setIdTarjeta(empleadito.getIdTarjeta());
         elEmpleado.setIdTurnoFecha(empleadito.getIdTurno());
         elEmpleado.setTelefono(empleadito.getTelefono());
         elEmpleado.setTipoEmpleado(empleadito.getTipoEmpleado());
         resultado.add(elEmpleado);
      }
 
    }catch(){
      ....................................
    }

> Date: Fri, 7 Nov 2008 04:32:06 -0800
> Subject: [JavaSOS] error MUY raro con Iterator
> From: lau.i...@gmail.com
> To: jav...@googlegroups.com

Laura

unread,
Nov 7, 2008, 8:19:49 AM11/7/08
to jav...@googlegroups.com
Hola, gracias por contestar.
Tenés razón con lo del cast, pero el netbeans es medio quisquilloso con
esos y medio que te obliga a ponerlo.
Funcionó lo del for también :) gracias!!!
Y descubrí a que se debía el error del iterator, aparentemente si hay
algún campo como null (aunque no sea campo clave) aborta la iteración...

Bueno, muchas gracias de nuevo.
Saludos.-

Laura.-
Reply all
Reply to author
Forward
0 new messages