UNION到JPA查询

Gio*_*ane 20 java jpa criteria

是否可以在JPA甚至"Criteria Builder"中查询"UNION"?

我正在寻找例子,但到目前为止我没有结果.

有没有人有任何使用它的例子?

或者是原生sql?

Mas*_*dul 26

SQL支持UNION,但JPA 2.0 JPQL不支持.大多数联合可以在连接方面完成,但有些不能,有些则更难以使用连接来表达.

EclipseLink支持UNION.

  • http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/JPQL#UNION链接到带有示例的EL文档 (2认同)

szc*_*npp 24

根据具体情况,可以使用子查询,例如:

select e
from Entity e
where e.id in
(
  select e.id
  from Entity2 e2
       join e2.entity e
  where e2.someProperty = 'value'
)
      or e.id in
(
  select e.id
  from Entity3 e3
       join e3.entity e
  where e3.someProperty = 'value2'
)
Run Code Online (Sandbox Code Playgroud)

  • 如果在子查询中有超过 1000 个结果,如何处理场景? (2认同)

小智 6

编写本机查询(设置为 true ,默认为 false ) - 例如。

String findQuery = "select xyz from abc union select abc from def"
@Query(value = findQuery, nativeQuery = true)
//method
Run Code Online (Sandbox Code Playgroud)


csl*_*tty 5

有一件事我想到了(寻找完全相同的问题):

对同一实体映射执行两个不同的JPA查询,只需将第二个结果的对象添加到第一个结果的列表(或设置为避免重复).

这样你获得与UNION相同的效果,不同之处在于你使用两个SQL语句而不是一个.但实际上,我希望它的表现与发布一个UNION语句一样好.

  • 好吧,这是明显的解决方法之一,但我也想将结果排在一起,例如我更喜欢在sql中执行此操作而不是在java中执行此操作 (6认同)
  • 但是我们不能进行分页。 (2认同)