Pregunta

Estoy usando JPQL para recuperar los datos. Puedo obtener datos mediante la instrucción

List persons = null;
persons = em.createQuery("select p.albumName from PhotoAlbum p , Roleuser r 
where r = p.userId and r.userID = 1");

Ahora puedo obtener los nombres de los álbumes utilizando la siguiente:

int i=0;
for (i=0;i<persons.size(); i++)
{   
     System.out.println("Testing n "+ i +" " +  persons.get(0));
}

Ahora quiero conseguir el nombre del álbum y de fila con nombre firstname del roleuser

Estoy utilizando la consulta

persons = em.createQuery("select r.firstName , p.albumName from PhotoAlbum p ,   
Roleuser r where r = p.userId and r.userID = 1").getResultList();

Ahora, ¿cómo puedo obtener el apellido filas y ALBUMNAME como el persons.get (0) devuelve un objeto

ejecutando el código:

 for (i=0;i<persons.size(); i++)
    {
        //r = (Roleuser) persons.get(i);
        System.out.println("Testing n "+ i +" " + persons.get(i));
    }

Me estoy poniendo esto:

Testing n 0 [Ljava.lang.Object;@4edb4077
INFO: Testing n 1 [Ljava.lang.Object;@1c656d13
INFO: Testing n 2 [Ljava.lang.Object;@46dc08f5
INFO: Testing n 3 [Ljava.lang.Object;@654c0a43

¿Cómo puedo asignar el persons.get(0) y obtener el firstname y albumname?

¿Fue útil?

Solución

  

Ahora ¿cómo obtener las filas primerNombre y ALBUMNAME como el persons.get (0) devuelve un objeto

Consultas con múltiples select_expressions en la cláusula SELECT devolver un Object[] (o un List de Object[]). A partir de la especificación JPA:

  

4.8.1 Resultado Tipo de la cláusula SELECT

     

El tipo del resultado de consulta especificado   por la cláusula SELECT de una consulta es una   entidad tipo de esquema abstracto, una   tipo de campo estado, el resultado de una   función de agregado, el resultado de una   operación de construcción, o algún   secuencia de estos.

     

El tipo de resultado de la cláusula SELECT   se define por las de los tipos de resultados de    select_expressions contenido en   eso. cuando múltiples    select_expressions se utilizan en la cláusula SELECT, el resultado de la consulta   es de tipo Object[], y el   elementos en este resultado de correspondencia   Para el orden de su   especificación en la cláusula SELECT y   en el tipo de los tipos de resultados de cada uno de    select_expressions .

Así pues, en su caso, es probable que desee algo como esto:

for (i=0;i<persons.size(); i++) {
    //r = (Roleuser) persons.get(i);
    System.out.println("Testing n " + i + " " + persons.get(i)[0] + ", " + 
        persons.get(i)[1]);
}

Tenga en cuenta que la especificación de una combinación interna mediante el uso de un producto cartesiano en la cláusula FROM y una condición de unión en la cláusula WHERE es menos típico de especificar un explícitas relaciones unirse sobre la entidad (utilizando la sintaxis [LEFT [OUTER] | INNER ] JOIN). Ver toda la sección 4.4.5 une en la especificación.

Referencias

  • JPA 1.0 Especificación
    • Sección 4.8.1 "Resultado Tipo de la cláusula SELECT"
    • Sección 4.8.2 "Constructor expresiones en la cláusula SELECT"
    • Sección 4.4.5 "une"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top