2

我编写了一个联合多个 select 语句的 JPQL 语句,每个语句选择一个不同的字符串常量。查询的简化版本如下所示:

SELECT DISTINCT 'A' AS widget_type
  FROM WidgetA widgetA
  WHERE widgetA.creationTimestamp > :cutoff
UNION SELECT DISTINCT 'B' AS widget_type
  FROM WidgetB widgetB
  WHERE widgetB.creationTimestamp > :cutoff

该查询不会导致任何错误,但我没有得到我期望的结果。我看到生成的 SQL 没有任何联合 - 它只从第一个选择中查询表:

select distinct 'A' as col_0_0_ 
from widget_a widget0_
where widget0_.creation_timestamp>?

为什么 JPA 在第一个 select 语句之后会忽略所有内容,有明显的原因吗?如果有什么不同,我使用 Hibernate 4.1.9 作为 JPA 实现,带有 MySQL 数据库。

4

1 回答 1

3

JPQL没有 UNION 这样的概念。因此,因此任何具有它的“查询”都不是 JPQL,因此应该作为无效的 JPQL 被拒绝(DataNucleus JPA肯定会这样做)

于 2013-02-25T08:16:48.367 回答