2009-09-08 7 views
0

Est-il possible de faire une sélection imbriquée dans JPA QL?JPA imbriqué Sélectionnez Left Outer Join

Comment écrire l'instruction SQL suivante dans JPA QL?

select * from preferences p left outer join (select * from preferencesdisplay where user_id='XXXX') display on ap.pref_id=display.pref_id; 

L'entité JPA PREFERENCES a une relation OneToMany à PREFERENCESDISPLAY. Je veux obtenir toutes les PREFERENCES qu'il y ait ou non une référence PREFERENCESDISPLAY.

+0

le fournisseur JPA est Toplink si cela aide. – Tazzy531

Répondre

0

En hiberner vous pouvez utiliser "avec":

select ... from Preferences p left join p.displays d with d.user.id = 100 

Mais dans JPA je n'ai jamais vu une telle possibilité cravates.

0

Est-ce que SQL fonctionne même?

Il serait utile que vous montriez vos entités, si vous avez tout cartographié correctement, il devrait être aussi facile:

select p from Preferences p left join p.preferencesDisplays pd with pd.userId =XXXX 

ou si avec est pas pris en charge par TopLink

select p from Preferences p left join p.preferencesDisplays pd 
where pd IS NULL or pd.userId = XXXX 
+0

L'idée est que je veux seulement faire une jointure externe gauche sur toutes les préférencesDispositions qui ont userid = xxxx – Tazzy531

+0

Le champ UserID est sur l'entité PreferenceDisplay. – Tazzy531

Questions connexes