それぞれが異なる文字列定数を選択する複数の 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 データベースを使用しています。