2016-06-22 7 views
1

2つのテーブルがあり、外部キーが同じであるこれらのテーブルからデータをフェッチしたい。私は、まずUNIONを使用してSQLクエリを書いた:JPA外部キーベースの異なるテーブルからデータをフェッチするクエリ

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' 

しかし、JpaはUNIONをまったくサポートしていません。

このクエリをjpaに書き込む他の方法はありますか?

答えて

1

私はこのクエリを試してみることをお勧めします:

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); 

複数選択式が使用されているので、結果は[] Object型である:

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

for (Object[] myUnion: results) { 
    JiraWidget jw = (JiraWidget) myUnion[0]; 
    UnitTestWidget uw = (UnitTestWidget) myUnion[1]; 
    //etc... 
} 
関連する問題