Java / JPA | Requête avec un type hérité spécifié
Je suis la construction d'une requête sur un générique de table "Échantillon" et j'ai plusieurs types qui héritent de cette table "SampleOne", "SampleTwo".
J'ai besoin d'une requête comme :
select s from Sample where s.type = :type
où le type serait un discriminateur de la valeur de la table. Est-il possible de toute manière ( et d'éviter de créer une entité spécifique des requêtes, un pour chaque SampleOne, SampleTwo... etc )
J'apprécierais toute entrée dans cette rubrique,
Salutations,
P.
source d'informationauteur redbull
Vous devez vous connecter pour publier un commentaire.
En JPA 2.0, vous pouvez utiliser
TYPE
expression (même si actuellement, il ne fonctionne pas avec les paramètres de mise en veille prolongée, voir HHH-5282):La même mise en veille prolongée-expression spécifique est
.class
:Voici la section pertinente de Java EE 6 tutoriel:
Si j'ai lu ce droit, votre requête:
Doit renvoyer uniquement les éléments de la sous-type si
type
est le régulateur de la colonne, de sorte que la seule chose qui vous reste à faire est de jeter les résultats de la liste à votre demande sous-type.Vous devez toujours être prudent Hibernate 4.3.7, car il y a toujours un problème avec la mise en œuvre de
TYPE()
par exemple:Cette requête ne fonctionne pas comme il vérifie correctement le type de
SpoForeignPilot
et pas le type de document.Vous pouvez contourner ce problème en faisant quelque chose comme ceci: