JPA requête pour DTYPE
J'ai une table unique qui est généré à partir de deux entités jpa (héritage). Nous avons donc une DTYPE colonne générée dans la table de base de données qui a le nom de l'entité a des valeurs.
Comment puis-je écrire un apc requête d'extraction de données pour une entité donnée. j'.e DTYPE = 'A'?
J'ai juste essayé d'utiliser DTYPE en jpa requête, mais comme prévu j'ai une erreur "impossible de résoudre à la propriété". S'il vous plaît laissez-moi savoir comment écrire cette requête.
Remarque - je ne veux pas utiliser de requête native.
Mise à jour:
J'ai Une classe et sous-classe AA qui s'étend A. DTYPE a deux valeurs A et AA.
Quand j'ai une requête pour Un, je reçois tous les A et AA entités. Comment exclure AA quand j'ai une requête pour Une?
OriginalL'auteur tom_987 | 2010-01-15
Vous devez vous connecter pour publier un commentaire.
Il suffit d'ajouter un simple champ dtype dans votre classe parent.
@Column(insérable = false, pouvant être mis à jour = false)
private String dtype;
Et donc, vous pouvez l'utiliser dans votre requête JPQL
OriginalL'auteur SCH
En supposant que vous avez de trois entités:
où les deux derniers sont les deux entités que vous en magasin avec une colonne discriminante, votre JPA-QL devrait être aussi simple que:
pour obtenir tous les gens. JPA est assez intelligent pour le comprendre. De même, vous pouvez faire:
et obtenir toutes.
vous n'avez pas de requête pour Partie, d'une requête de la Personne ou de l'Organisation. Partie est juste la base/type commun pour les hérité de types.
OriginalL'auteur cletus
Vous pouvez utiliser les noms d'entité dans votre JPA requêtes, la colonne discriminante est rendue abstraite.
Supposons que vous avez deux classes d'entité
SubClassA
etSubClassB
, qui héritent deSuperClass
, alors vous pouvez interroger ces entités comme suit:ou
Si vous souhaitez interroger pour les deux entités, l'utilisation
OriginalL'auteur Henning
En plus de ce que @SCH post, et que cela n'a pas directement pour moi, l'utilisation d'Oracle, j'ai été faire une Exception en disant que "dtype" était un mot clé réservé. J'ai ensuite fait
Qui a bien fonctionné pour moi, en tant que de cette façon je pourrais modifier dynamiquement le Type que je veux requête à l'aide d'une condition plutôt que de modifier la déclaration.
OriginalL'auteur jmendiola