2016-06-22 11 views
1

Ich habe 2 Tabellen, ich möchte Daten aus diesen Tabellen abrufen, wo ihre Fremdschlüssel identisch ist. Ich habe eine SQL-Abfrage zuerst geschrieben mit Union:JPA Abfrage zum Abrufen von Daten aus verschiedenen Tabellen auf Basis von Fremdschlüssel

SELECT jw.widget_name,jw.user_id FROM dashboard.jira_widget as jw WHERE jw.user_id = '1' 
UNION ALL 
SELECT uw.widget_name,uw.user_id FROM dashboard.unit_test_widget as uw WHERE uw.user_id = '1' 

Aber Jpa unterstützt UNION überhaupt nicht.

Gibt es eine andere Möglichkeit, diese Abfrage in jpa zu schreiben?

Antwort

1

Ich würde vorschlagen, diese Abfrage, um zu versuchen:

EntityManager em; 
Query query = em.createQuery('SELECT jw, uw FROM JiraWidget as jw, UnitTestWidget as uw WHERE jw.userId = uw.userId AND jw.userId=:user'); 
query.setParameter('user', user); 

Da mehrere Select-Ausdruck verwendet werden, ist das Ergebnis vom Typ Object []:

List<Object[]> results query.getResultList(); 

for (Object[] myUnion: results) { 
    JiraWidget jw = (JiraWidget) myUnion[0]; 
    UnitTestWidget uw = (UnitTestWidget) myUnion[1]; 
    //etc... 
}