sélectionnez à partir de deux tables à l'aide de JPQL
Je suis en utilisant JPQL
pour récupérer des données. Je peux obtenir des données à l'aide de l'instruction
List persons = null;
persons = em.createQuery("select p.albumName from PhotoAlbum p , Roleuser r
where r = p.userId and r.userID = 1");
Maintenant, je peux obtenir les noms d'album à l'aide de ceci:
int i=0;
for (i=0;i<persons.size(); i++)
{
System.out.println("Testing n "+ i +" " + persons.get(0));
}
Maintenant je veux obtenir le nom de l'album et le roleuser de la ligne nommée firstname
Je suis l'aide de la requête
persons = em.createQuery("select r.firstName , p.albumName from PhotoAlbum p ,
Roleuser r where r = p.userId and r.userID = 1").getResultList();
Maintenant, comment puis-je obtenir les lignes prénom et albumname que les personnes.get(0) retourne un objet
par l'exécution du code :
for (i=0;i<persons.size(); i++)
{
//r = (Roleuser) persons.get(i);
System.out.println("Testing n "+ i +" " + persons.get(i));
}
J'obtiens ceci:
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
Comment puis-je carte la persons.get(0)
et obtenir le firstname
et albumname
?
OriginalL'auteur Pradyut Bhattacharya | 2010-08-25
Vous devez vous connecter pour publier un commentaire.
De requêtes avec plusieurs select_expressions dans la clause SELECT retourne un
Object[]
(ou unList
deObject[]
). À partir de la spécification JPA:Donc dans votre cas, vous voulez probablement quelque chose comme ceci:
Noter que la spécification d'une jointure interne par l'utilisation d'un produit cartésien dans la clause from et une condition de jointure dans la clause where est moins typique que de spécifier explicitement rejoignez plus de entités-relations (à l'aide de la
[LEFT [OUTER] | INNER ] JOIN
syntaxe). Voir l'ensemble de la section 4.4.5 Rejoint dans le cahier des charges.Références
JPA 1.0 Spécifications: jcp.org/en/jsr/detail?id=220
tout comment pouvons-nous utiliser des procédures stockées de la base de données, dans mon cas, mysql, car sans procédures stockées, je pense que JPA est plus lent interprète qu'en db, pour les procédures stockées.
OriginalL'auteur Pascal Thivent