2011-10-27 5 views
0

Je suis confronté à quelques problèmes avec Hibernate. Nous devons sauver un objet avec ses enfants. Chaque enfant a une clé primaire composite. Une propriété de la clé sera insérée par un déclencheur. Une autre propriété sera définie à partir du programme avant d'appeler saveOrUpdate(Object).Problèmes d'hibernation avec la clé primaire composite

Mais nous ne sommes pas en mesure de sauvegarder l'objet. Hibernate lève l'exception Same identifier is already exists in the session.

J'ai essayé session.clear(), mais j'ai la même exception. Lorsque j'ai essayé session.merge(), seul le dernier enfant a été enregistré, les autres ont été ignorés.

+0

pouvez-vous publier les fichiers hbm ou java de l'objet que vous essayez d'enregistrer. – ManuPK

Répondre

1

Si vous n'êtes pas allez avoir besoin de la même session, les objets Hibernate une fois enregistrés, vous pouvez les détacher juste après avoir sauvé avec Session.evict():

// children is the collection of detached children, ready to save 
for (Child child : children){ 
    session.save(child); 
    session.evict(child); 
} 

Sinon, cette entrée dans les forums Hibernate pourrait être utile : Before Insert Trigger and ID generator. Il y a une implémentation d'un AbstractPostInsertGenerator que vous pouvez intégrer selon vos besoins.