有关通过JPA查询多个表的问题

时间:2013-07-06 15:01:40

标签: sql database spring java-ee jpa

最近,我需要在我的项目中使用JPA。 但是,我遇到了一些困难。 JPA似乎比我想象的更难。 所以,我在这里发布我的问题,希望有些人可以帮助我。

有两个表操作和分析,sql如下:

select op_id from operation where flag = 1 
union
select an_id from analysis where on_type = "processed";

op_idan_id两个列名实际上意思相同。

任何人都可以帮我写一个JPA版本吗? 我非常感激。 非常感谢你。

1 个答案:

答案 0 :(得分:1)

JPQL不支持联盟。

您有四种选择:

  1. 您可以在数据库中创建一个可以进行联合的视图,然后映射到该视图
  2. 编写一个执行联合的本机SQL(因为您只需要ID,这是一个有效的选项)
  3. 如果ID是不同的,您可以运行两个查询,并连接结果列表(如果不是不同的话,您可以使用Set来过滤重复)
  4. 如果您使用最新的(至少> = 2.4)EclipseLink作为JPA提供程序,则可以使用UNION
  5. 请在此处查看this question