特定の日付以降に作成された行を持つテーブルを特定するために、基本的にいくつかのテーブルから選択する SQL クエリを作成しました。私のSQLは次のようになります。
SELECT widget_type FROM(
SELECT 'A' as widget_type
FROM widget_a
WHERE creation_timestamp > :cutoff
UNION
SELECT 'B' as widget_type
FROM widget_b
WHERE creation_timestamp > :cutoff
) types
GROUP BY widget_type
HAVING count(*)>0
これはSQLではうまく機能しますが、JPAはユニオンを使用して「クラスごとのテーブル」ポリモーフィッククエリを実行できますが、JPQLはクエリでユニオンをサポートしていないことが最近わかりました。そのため、JPA に同じことを達成するために使用できる代替手段があるかどうか疑問に思っています。
実際には、2 つだけでなく 12 個のテーブルに対してクエリを実行することになるため、個別のクエリを実行することは避けたいと考えています。また、移植性の理由から、ネイティブ SQL クエリを実行することも避けたいと思います。
上記にリンクした質問では、widget_a と widget_b にマップされるエンティティが同じ継承ツリーの一部であるかどうかを尋ねられました。はい、そうです。ただし、基本クラスから選択した場合、子エンティティごとに異なる文字列定数を指定する方法はないと思いますよね? 私が提供する文字列の代わりにエンティティのクラス名を選択できれば、それも私の目的に役立つかもしれません。しかし、それが可能かどうかもわかりません。考え?