Foros del Web » Programación para mayores de 30 ;) » Java »

Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

Estas en el tema de Error de Casting al hacer consulta nativa con JPA (Eclipse Link) en el foro de Java en Foros del Web. Hola a todos, Estoy trabajando con JPA implementado con Eclipse Link. Estoy tratando de hacer una consulta SQL nativa sobre una de mis entidades, pero ...
  #1 (permalink)  
Antiguo 21/01/2014, 14:25
 
Fecha de Ingreso: noviembre-2008
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 13 años, 6 meses
Puntos: 2
Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

Hola a todos,

Estoy trabajando con JPA implementado con Eclipse Link. Estoy tratando de hacer una consulta SQL nativa sobre una de mis entidades, pero obtengo una excepción en tiempo de ejecución referente al tratamiento del resultado de la consulta.

Este es mi codigo:
Código:
private List<MRAProyecto> ordenarProyectos (){
      Query q = em.createNativeQuery("Select *From MRAProyecto ORDER BY PROY_ID");
       return (List<MRAProyecto>)q.getResultList();
    }

List<MRAProyecto> consultaProyectos = startup.ordenarProyectos();
        System.out.println("Lista de proyectos ordenados por su identificador");
         for (MRAProyecto proyecto:(List<MRAProyecto>)consultaProyectos){

             System.out.println(proyecto.toString());
        }
La excepción que se lanza cuando ejecuto la aplicacion es esta:
Código:
xception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to entity.MRAProyecto
at Startup.main(Startup.java:39)
He probado haciendo todos los castings posibles y por haber, pero la excepción siempre aparece.

¿Veis algo que yo no veo?

Gracias de antemano y un saludo
  #2 (permalink)  
Antiguo 21/01/2014, 15:16
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 14 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

Hola,

Cita:
Iniciado por marodal Ver Mensaje
..... al tratamiento del resultado de la consulta. ...
¿Que te hace pensar que createNativeQuery te va a devolver un List?

Código:
private List<MRAProyecto> ordenarProyectos (){
      Query q = em.createNativeQuery("Select *From MRAProyecto ORDER BY PROY_ID");
      System.out.println(q.getResultList().getClass().getCanonicalName());
       return (List<MRAProyecto>)q.getResultList();
}
Saludos,
  #3 (permalink)  
Antiguo 21/01/2014, 15:50
 
Fecha de Ingreso: noviembre-2008
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

No entiendo la respuesta. Lo unico que añades es ese println..., pero sigo devolviendo (List<MRAProyecto>)q.getResultList(), es decir, una lista de elementos MRAProyecto.
  #4 (permalink)  
Antiguo 21/01/2014, 16:22
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 14 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

Hola,

Cita:
Iniciado por marodal Ver Mensaje
No entiendo la respuesta. Lo unico que añades es ese println..., pero sigo devolviendo (List<MRAProyecto>)q.getResultList(), es decir, una lista de elementos MRAProyecto.
Lo que sucede es que yo no sé que te está devolviendo, aunque me imagino que será un Vector, pero para estar seguros, ¿por qué no pones el print en tu código y miras en los logs del servidor, o en la consola, la clase que te está devolviendo el método? Y así cuando lo sepas, sabrás como modificar tu código consecuentemente,

Saludos,
  #5 (permalink)  
Antiguo 21/01/2014, 16:33
 
Fecha de Ingreso: noviembre-2008
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

Lo que me devuelve es una lista, eso esta comprobado. Ese println lo muestra, ¿pero una lista de que?

El problema se encuentra aqui:

for(MRAEmpleado empleado:consultaEmpleado)

Parece que la lista consultaEmpleado no se devuelve como una lista de MRAEmpleado, y por muchos castings que haga, no logra que pille el tipo correcto.
  #6 (permalink)  
Antiguo 22/01/2014, 05:03
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 9 años, 4 meses
Puntos: 22
Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

q.getResultList();

te devuelve una lista de elementos, supongo que serán elementos de tipo Object, porque no miras lo que contienen los objetos de la lista?
  #7 (permalink)  
Antiguo 22/01/2014, 09:37
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 14 años, 4 meses
Puntos: 41
Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

Voy a omitir la mala (pésima) práctica/uso que estás haciendo del ORM y limitarme a tu problema..

Query q = em.createNativeQuery("Select * From MRAProyecto ORDER BY PROY_ID", MRAProjecto.class);
__________________
BadProgrammerException!
  #8 (permalink)  
Antiguo 22/01/2014, 14:08
 
Fecha de Ingreso: noviembre-2008
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

Cita:
Voy a omitir la mala (pésima) práctica/uso que estás haciendo del ORM
¿Te refieres al mapeo que estoy haciendo sobre mis entidades? ¿Y tu como sabes cual es?
Si solo estas viendo una consulta!!!!

Gracias por tu ayuda, aunque esa no es la solucion:

Error(89,84): cannot find symbol; symbol: class MRAProjecto; location: class Startup Startup.java C:\JDeveloper\mywork\BasesDatos\JPA\src\test JPA.jpr
  #9 (permalink)  
Antiguo 23/01/2014, 01:15
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 9 años, 4 meses
Puntos: 22
Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

Cita:
Error(89,84): cannot find symbol; symbol: class MRAProjecto; location: class Startup Startup.java C:\JDeveloper\mywork\BasesDatos\JPA\src\test JPA.jpr
No se si la solución de FiruzzZ es la correcta, pero este último error se debe a que has puesto MRAProjecto (que se equivoco FiruzzZ al poner el nombre), y tu clase se llama MRAProyecto con "y", por eso te dice que no existe el elemento.

De todas maneras debería haberte avisado el compilador de que la clase no existía

Un saludo.
  #10 (permalink)  
Antiguo 23/01/2014, 07:03
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 14 años, 4 meses
Puntos: 41
Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

No me refería a tu mapeo, como bien lo decís eso no se ve nada y si es la respuesta, lo que pasa es que sos un programador tan junior aún que no supiste ver mi TYPO de proJect, sos tan apurado que ni te tomaste la molestia de entender esta simple exception que ya te respondió rgf y finalmente no prestar atención al error de sintaxis que te debes estar marcando el JDeveloper al escribir el nombre de una class que no existe.
Para futuros post tuyos voy a abstenerme de ayudarte nomas, creo que va ser la mejor manera de ayudarte
__________________
BadProgrammerException!
  #11 (permalink)  
Antiguo 23/01/2014, 12:24
 
Fecha de Ingreso: noviembre-2008
Ubicación: Sevilla
Mensajes: 157
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

¿Y tu que sabes que tipo de programador soy? Me da mucha rabia que haya gente que desprecie a los demás así. Seguramente, tu no tienes ni p. idea de JPA ni de hibernate, y te las das de supersabiondo.

El error es el que he comentado, adjunto captura de pantalla.

http://imagizer.imageshack.us/v2/800...0/203/zbcj.jpg

Gracias a los que intentan aportar ideas.
  #12 (permalink)  
Antiguo 24/01/2014, 01:22
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 9 años, 4 meses
Puntos: 22
Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

Haya paz!!! que no es para tanto!!!

Vamos a ver marodal, fijate bien en lo que te puso FiruzzZ!! tienes que indicar el nombre completo de la clase incluyendo la extensión MRAProyecto.class
Sino te estará buscando una variable que no existe.

Un saludo.
  #13 (permalink)  
Antiguo 24/01/2014, 10:39
Avatar de FiruzzZ  
Fecha de Ingreso: diciembre-2007
Ubicación: en casa
Mensajes: 470
Antigüedad: 14 años, 4 meses
Puntos: 41
Respuesta: Error de Casting al hacer consulta nativa con JPA (Eclipse Link)

abrí los ojos por favor.. sos un "futuro programador".. date cuente que te falta escribir .class
__________________
BadProgrammerException!

Etiquetas: eclipse, jpa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:40.