Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA只执行union中的第一个select语句?_Jpa_Jpql - Fatal编程技术网

JPA只执行union中的第一个select语句?

JPA只执行union中的第一个select语句?,jpa,jpql,Jpa,Jpql,我编写了一个JPQL语句,它联合了多个select语句,每个select语句选择一个不同的字符串常量。查询的简化版本如下所示: 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.c

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

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查询表:

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

JPA在第一次select声明之后会忽略一切,这有什么明显的原因吗?如果有什么不同的话,我使用Hibernate 4.1.9作为JPA实现,使用MySQL数据库。

没有UNION这样的概念。因此,任何包含它的“查询”都不是JPQL,因此应该作为无效的JPQL被拒绝(这当然可以)

有趣。我想Hibernate会对我抱怨的。如果JPQL不处理联合,是否有类似的替代方案?在同一继承树中是否有“WidgetA”和“WidgetB”?如果是这样,那么对公共超类执行JPQL,您可能会得到一条UNIONSQL语句。否则,只需发出两个JPQL查询,并将结果合并到您的代码中。感谢您在查询中对联合进行了直接设置,并提供了建议。我现在还有其他问题,但它们与这个问题有点离题。我想最好是分开张贴。EclipseLink支持JPQL中的联合,