Mappage d'une Vue SQL avec pas de Clé Primaire à l'Entité JPA
Dans mon Application Java je veux obtenir de l'information qui est stockée dans ma Base de données Oracle, à l'aide de JPA.
Dans ma Base de données j'ai un point de Vue, avec un ensemble de colonnes que j'ai reçu de certains autres tables. Je veux une carte son point de Vue. Cependant, mon Vue n'est pas une Clé Primaire, donc je ne peux pas créer une Entité JPA. J'ai pensé à utiliser 2 colonnes Clés Étrangères.
Quelle est la meilleure façon de mettre en œuvre? J'ai vu beaucoup d'approches différentes, que je ne peux pas décider qui est le meilleur pour ce cas.
OriginalL'auteur user2144555 | 2013-11-25
Vous devez vous connecter pour publier un commentaire.
Une façon de résoudre ce problème est l'utilisation d'une clé primaire composite par le simple ajout de l'annotation @Id pour les champs appropriés.
Merci c'est la solution, en ajoutant le @Id à la vue résolu mon problème, je suis en utilisant Arquillian donc j'ai dû ajouter de l'entité pour la vue et ajouter un autre champ pour ajouter la clé primaire
OriginalL'auteur PepperBob
Il n'y a pas de meilleure approche. Comme c'est une Vue, vous ne serez jamais d'insérer toutes les données, ce qui signifie que vous pouvez simplement définir une Clé Primaire sur un des champs existants. Vous pouvez également essayer de marquer ce domaine avec des
insertable=false, updatable=false
.Mise à JOUR
Vous connaissez mieux vos données, mais en général dans une vue, vous ne peut pas garantir que tous les enregistrements sont uniques, c'est pourquoi vous devriez en général éviter de travailler directement avec des entités de la vue. Je suggère plutôt de travailler avec une classe Wrapper, quelque chose comme:
Mise à jour de la réponse.
Si j'avais vu votre réponse il y a quelques temps, je ne le ferais jamais un point de vue sur la Base de données et la carte comme une Entité. L'unicité tué mon app rapports, et j'ai presque renoncé à mon projet à cause de ça... Merci
OriginalL'auteur Andrei I