JPA Query基于外键从不同表中获取数据

时间:2016-06-22 12:19:57

标签: java jpa

我有2个表,我想从这些表中获取外键相同的数据。我首先使用union编写了一个sql查询:

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 个答案:

答案 0 :(得分: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);

由于使用了多个Select表达式,因此结果类型为Object []:

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

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