Bonjour Eric, Nous avons mis à jour qu'un côté des associations pour l'unique raison de simplifier le code. Mais tu as raison, cette manière de faire entraîne des graphs de persistance incohérents. Si je comprends bien le post que tu donnes en exemple, quand Hibernate détecte des incohérences, il semble prendre en compte la version de l'entité propriétaire de l'association (par exemple dans une association 1-n, l'entité du côté 1). Seulement ce ne semble pas être ce qui arrive avec personne#lotsDroits par exemple. En effet, c'est bien l'entité non propriétaire de la relation qui est mise à jour et une fois la session hibernate rechargée, nous nous retrouvons bien avec graph cohérent avec les éléments précédemment ajoutés. En regardant la doc d'hibernate que j'ai trouvée, ils parlent en effet bien qu'il fasse mettre à jour les deux côtés, mais disent seulement qu'il se servent de l'entité propriétaire pour résoudre les conflits. http://docs.jboss.org/hibernate/core/4.1/manual/en-US/html/ch01.html#tutoria... J'ai donc plutôt l'impression que quand le graph est incohérent, il prend d'abord en compte la propriété qui a été mise à jour et si les deux l'ont été (de manière différente du coup), il prend la version de l'entité propriétaire. En tout cas, n'hésite pas à corriger la façon de mettre à jour ces associations... surtout si cela peut entraîner des effets de bord avec Hibernate Search. Adrien PS : en passant ManageUtilisateurPage.java est un bon exemple Wicket de comment inutilement compliquer les développements en utilisant des listes temporaires. C'est un artefact qui reste par rapport aux autres interfaces qui gèrent bien plus simplement des listes de même type. Le 01/03/2013 04:51, Eric Chatellier a écrit :
Bonjour,
Dans cantharella, les associations sont bidirectionnelles mais des modifications ne sont toujours faite que d'un seul coté.
Comme décrit dans ce commentaire: http://stackoverflow.com/a/5460737/2038100 l'association devrait être référencées des deux cotés. (apparemment la doc officielle en parle aussi, mais pas moyen de retrouver le lien).
Le problème n'est pas visible à l'exécution car dans le cas d'une application web, lors du rechargement entre les pages, les associations sont bien valuées des deux cotés.
Ce problème pourrait être à l'origine d'un effet de bord dans l'indexation lucene. Les droits sont ajoutés sur les utilisateurs: personne#lotsDroits, mais le lot n'étant pas modifiés lot#personnesDroits, hibernate ne peut pas détecter que le lot a été modifié pour le réindexer.
Est-ce volontaire de ne pas gérer les bidirections des deux cotés ?
-- Adrien Cheype Ingénieur en Systèmes d'Information Service « Informatique Scientifique et Appui aux Partenaires du Sud » Direction du Système d'Information (DSI) http://www.ird.fr/dsi/ http://www.ird.fr/informatique-scientifique/ INSTITUT DE RECHERCHE POUR LE DEVELOPPEMENT BP A5 - 98848 Nouméa - Nouvelle Calédonie Tél. +687 260 789