Option one-to-one mapping en veille prolongée
Comment puis-je créer une option one-to-one mapping dans le hibernate hbm fichier? Par exemple, supposons que j'ai un Utilisateur et un last_visited_page table. L'utilisateur peut ou peut ne pas avoir un last_visited page. Voici mon one-to-one mapping dans le hbm fichier:
Classe D'Utilisateur:
<one-to-one name="lastVisitedPage" class="LastVisitedPage" cascade="save-update">
LastVisitedPage Classe:
<one-to-one name="user" class="user" constrained="true" />
L'exemple ci-dessus ne permettent pas la création d'un utilisateur qui ne dispose pas d'une dernière page visitée. Fraîchement créé, l'utilisateur n'a pas visité toutes les pages encore. Comment puis-je changer le hbm mappage pour le userPrefs de cartographie en option?
OriginalL'auteur hibernate | 2010-05-06
Vous devez vous connecter pour publier un commentaire.
À ma connaissance, Hibernate ne supporte pas l'option one-to-one (voir HHH-2007), de sorte que vous aurez à utiliser un faux
many-to-one
avecnot-null="false"
à la place.OriginalL'auteur Pascal Thivent
Il suffit de passer la plupart de la journée d'aujourd'hui en essayant de faire quelque chose de similaire, enfin trouvé la solution suivante (juste au cas où cela pourrait être utile pour d'autres personnes)
Espoir qui pourrait aider à sauver quelqu'un certain temps
OriginalL'auteur JustDanyul
J'ai eu un) des nouvelles de problème, mais à l'aide d'annotations. Google m'a amené ici, alors si quelqu'un d'autre se trouve dans la même sitatuions, cela a fonctionné pour moi:
http://opensource.atlassian.com/projects/hibernate/browse/ANN-725
Si vous êtes à l'aide d'annotations, vous pouvez utiliser le @NotFound(action=NotFoundAction.IGNORER) annotation, afin que vous n'obtenez pas une exception. Assurez-vous que votre code vérifie pour les valeurs null parce que c'est maintenant ne pourrait pas être là 😉
OriginalL'auteur davidemm
Si un utilisateur a au plus un last_visited page, il y a alors deux cas :
(a) certains utilisateur donné n'a pas de last_visited page, dans ce cas il n'y aura pas de tuple pour cet utilisateur dans le last_visited_page table,
(b) certains utilisateur donné a exactement un last_visited page, dans ce cas il y aura exactement un tuple pour cet utilisateur dans le last_visited_page table.
Qui devrait rendre à l'évidence que userid est une clé candidate dans votre dernière visite-page table.
Et qui devrait en faire il est évident que vous devrez déclarer que la clé du SGBD.
OriginalL'auteur Erwin Smout
Eu le même problème, résolu avec
@OneToOne(optional = true)
sur l'Utilisateur de la classe (hibernate 5.2.17.Final)OriginalL'auteur Tolomeo Nogo