JPQL équivalent de requête SQL à l'aide des syndicats et de la sélection des constantes

J'ai écrit une requête SQL que, fondamentalement, sélectionne à partir d'un certain nombre de tables afin de déterminer ceux qui ont des lignes qui ont été créés depuis une date donnée. Mon SQL ressemble à quelque chose comme ceci:

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

Qui fonctionne bien en SQL, mais j'ai récemment constaté que, tandis que JPA peut utiliser des syndicats d'exercer "une table par classe" des requêtes polymorphiques, JPQL ne prend pas en charge les syndicats dans les requêtes. Ce qui laisse me demandais si JPA a une alternative que je pourrais utiliser pour accomplir la même chose.

En réalité, je serais de l'interrogation d'une douzaine de tables, pas de seulement deux, donc je voudrais éviter de faire des requêtes distinctes. Je tiens également à éviter de faire une native de requête SQL pour des raisons de portabilité.

Dans la question que j'ai lié ci-dessus, il a été demandé si les entités de la carte à widget_a et widget_b font partie de la même arborescence d'héritage. Oui, ils sont. Cependant, si j'ai choisi de leur classe de base, je ne crois pas que j'aurais un moyen de préciser les différentes constantes de chaîne pour l'enfant différent entités, serais-je? Si je pouvais choisir une entité du nom de la classe au lieu d'une chaîne-je fournir, susceptibles de servir de mon but. Mais je ne sais pas si c'est possible que ce soit. Pensées?

Il semble que vous voulez ré-implémenter quelque chose qui est déjà disponible out-of-the-box en JPA: les droits de succession?
En fait, je ne l'utilisation de l'héritage, quand je veux requête pour les objets eux-mêmes. Et il fonctionne très bien. Mais comme la question dit, ce que je veux faire ici est de requête pour laquelle les TYPES d'entité ont été utilisés (créé) récemment, pas de requête pour les entités elles-mêmes. Si vous avez un moyen de le faire, j'aimerais savoir

OriginalL'auteur spaaarky21 | 2013-02-26