Bonjour,
Voilà mon problème, j'ai une table Personne et une table User. Dans la table User, il y a une clé étrangère qui référence la clé primaire de la table Personne.
Comment reproduire ça au niveau des annotations sur les entités ?
One-to-One ?
Bonjour,
Voilà mon problème, j'ai une table Personne et une table User. Dans la table User, il y a une clé étrangère qui référence la clé primaire de la table Personne.
Comment reproduire ça au niveau des annotations sur les entités ?
One-to-One ?
Si tu as une relation 1..1 oui.
1 User => 1 Personne
1 Personne => 1 User
Est ce que l'identifiant de User n'est pas tout le temps celui de Personne?Si oui niveau conceptuel j'aurais plutôt vu un héritage. Sinon est ce que pour une Personne tu as plusieurs User correspondants? dans ce cas Dans Personne tu ferais un OnetoMany vers User et un ManyToOne dans le sens User==>Personne.
Merci pour vos réponses ! j'ai pu faire marcher la solution de base (one-to-one)
Deux questions me viennent :
1/ Dans mon exemple, lorsque je regarde en base, j'ai bien une clé étrangère (user) qui est égale à la clé primaire de la table personne, mais quand je regarde la structure de la table user, je ne remarque pas de clé étrangère qui référent officiellement la table personne. En gros, ca correspond mais pour Mysql j'ai pas l'impression que c'est pas une clé étrangère : d'où peut venir ce manque ?
2/ Dans le cadre de l'héritage, est-il possible que la table personne garde ses propriétés de "classe mère" et que la table user garde que ses propriétés de "classe fille" ?
Merci d'avance.
Ca me parait pas déraisonnable si tu me confirmes ce test. Peux tu éssayer d'ajouter un enregistrement dans la Table User dont l'identifiant ne serait pas présent dans la table Personne? Si c'est le cas la clé étrangère dans User qui référencerait Personne serait en réalité sa clé primaire
Oui c'est possible, mais ma réponse va dépendre de la réponse de la question 1.
J'ai testé et la clé étrangère dans User est NULL. Je ne sais pas si c'est normal ou pas, je me demande juste :
Est ce que Hibernate fait sa correspondance "dans son coin" ou bien il force la base de données a rajouté les contraintes d'intégrités, les clés étrangères, etc ?
Donc y'a pas de contrainte référentielle gérée automatiquement par ta bd.Elle doit être gérer programmatiquement je suppose?
Non non hibernate ne gère les contraintes que via le mapping, si tu ne mets pas de contraintes au niveau mapping il éssaiera d'aller écrire en BD et c'est ton SGBD qui le jettera si la contrainte est présente physiquement.
Partager