2010-03-08 5 views
0

J'ai deux objets: Utilisateur et Autorisation, où l'Utilisateur a une Collection. Dans mon « créer » un service, je lis un tas d'autorisations, les mettre dans un HashSet, les ajouter à l'utilisateur et créer l'utilisateur à l'aide de mon DAO qui ditHibernate/Spring: Collections persistantes

((SessionFactory) sessionFactory).getCurrentSession().save(user); 

Quand je regarde dans mon objet, tout semble bien, mais quand je regarde dans la base de données, il n'a pas ajouté l'ensemble dans la base de données.

Des suggestions sur comment je devrais aller sur le débogage cela? Des pièges typiques?

Vive

Nik

+0

donnez des morceaux de votre code. comment allez-vous ajouter? vous êtes-vous assuré (via la journalisation) que la collection est complète – Bozho

Répondre

1

La solution est simplement la suivante: Bien que j'aie ajouté le Permissions HashSet à l'utilisateur, je n'ai pas ajouté l'utilisateur au Users HashSet dans Permission. Hibernate a besoin des deux côtés pour être mis à jour.

Vive

Nik

PS, les commentaires sur le code ne suffit pas, je crois que la description était assez pour le rendre suffisamment général pour servir à d'autres qui visiteront le fil.

+2

non, ce n'était pas le cas. Vous voyez que 3 réponses ont été données qui pourraient être le problème, mais ont été exclues après vos clarifications. – Bozho

+0

+1 aux commentaires de Bozho. @niklassaers - Si vous aviez fourni des informations pertinentes en premier lieu, vous n'auriez pas perdu de temps et d'efforts d'autres personnes. Et pour couronner le tout, vous vous comportez comme si vous n'aviez rien fait de mal. – Padmarag

+0

S'il vous plaît, dites-moi comment les lecteurs pouvaient comprendre par magie que l'association était bidirectionnelle? Si vous n'êtes pas en mesure d'exprimer le problème correctement, ayez au moins la décence de l'admettre et de fournir des détails pertinents aux personnes qui essaient d'aider quand ils demandent au lieu de faire des suppositions ridicules. Et vous avez vraiment besoin d'apprendre à poser des questions de manière intelligente (http://catb.org/~esr/faqs/smart-questions.html). –

0

Vérifiez comment vous avez défini votre un à plusieurs, en particulier l'option CASCADE, et vérifiez qu'il a une valeur qui permet de persister collections.

+0

Cet ensemble utilise MappedBy = "users", targetEntity = Permission.class et Permission.class utilise cascade = {CascadeType.PERSIST, CascadeType.MERGE}. Est-ce que ça a l'air ok? – niklassaers

+0

Vous devez définir l'option de cascade dans laquelle vous définissez votre relation un-à-plusieurs dans User.class. – pedromarce

+0

Ah, c'est une relation plusieurs-à-plusieurs. De nombreux utilisateurs peuvent avoir plusieurs autorisations – niklassaers