8
votes

Comment ferais-je mapper une relation parent / enfant sur le même objet avec JPA?

Après avoir lu ce message Entité de relation de carte JPA Parentid J'ai essayé de l'appliquer à mon code mais cela n'a pas fonctionné pour moi.

Ceci est le code que j'ai dans mon objet xxx

maintenant c'est le test i exécuté Xxx

Cette ligne du test échoue toujours. xxx

basé sur la configuration que j'ai pour mes relations, hibernate ne peut pas récupérer la sous-catégorie et Je ne sais pas pourquoi. Maintenant, j'espère vraiment vraiment que ce n'est pas quelque chose de stupide de ma part parce que je vais me tirer dessus (même si c'est tard et je suis fatigué). Au fait, cela ne vous dérange pas des variables publiques dans le code, j'utilise Jouer! (Playframework) et il s'occupe de l'encapsulation. Merci d'avance pour toute aide


0 commentaires

3 Réponses :


3
votes

Le code indiqué dans votre question n'ajoute rien à Sous-catégories . Il ne l'initialise que par une liste vide. Je pense que vous avez besoin de quelque chose comme xxx

donc, si je comprends (et lisez) votre code correctement, hibernate ne (pas) récupérer les sous-catégories car il reste vide après avoir appelé neuf Catégorie (sportcat, "hockey", faux) .Save ();


0 commentaires

0
votes

Vous vous attendiez probablement à suffire à ajouter l'entité mère à l'enfant, mais d'après ce que j'ai vu, Hibernate vous oblige à maintenir les deux extrémités d'une relation unique.

En d'autres termes, vous devez ajouter la catégorie enfant à la liste des catégories des parents.

C'est décrit ici: http: // docs.jboss.org/hibernate/core/3.3/reference/fr/html/example-parentchild.html#example-parentchild-bidir

Et aussi ici (avec un problème de mise en cache supplémentaire): hibernate @onetoMany avec mappeby (enfant parent-enfant) et problème de cache


0 commentaires

6
votes

Ce n'est pas un problème de cartographie des parents et de l'enfant à la même classe. - le problème est que vous devez maintenir les deux extrémités de la relation bidirectionnelle à la main.

child.setParent(parent)
parent.addChild(child)


1 commentaires

C'est exactement ce que j'ai fait. J'ai ajouté une méthode pour ajouter une sous-catégorie à une catégorie mère. J'ai modifié mon test en conséquence et cela fonctionne exactement comme je le veux maintenant. Merci beaucoup Ralph. Et merci à tout le monde pour y avoir des réponses.