Re: [Cantharella-devel] Méthode equals() et hashCode() non redéfinie sur les entités
Le 27/02/2013 20:47, Eric Chatellier a écrit :
Le 27/02/2013 07:04, Adrien Cheype a écrit :
Tu devrais normalement t'en sortir avec cet astuce... Ok, ca fonctionne avec cette astuce.
à moins que tu préfères charger ton objet dans la même session Hibernate que ta liste. C'est un document qui n'a pas forcement d'id (par encore sauvé), donc actuellement je n'ai que l'instance non rechargeable. Ok, je comprends mieux la subtilité. Tu ne peux pas utiliser un constructeur qui prend en argument un id et qui charge l'objet car celui-ci peut ne pas exister. Cela se passe uniquement quand on crée une entité quelconque puis qu'on ajoute un document et qu'on revient sur son édition avant d'avoir valider l'entité créer. Ce n'est qu'à la validation du formulaire de cet entité que l'ensemble des objets sont enregistrés en base. Par contre, ce que je ne saisis pas tout à fait, c'est que tu sembles effectuer l'ajout du fichier en base lorsqu'on valide l'ajout d'un document. Cette ajout ne devrait-il pas se faire qu'une fois l'entité enregistré pour éviter de laisser des fichiers orphelins ?? (exemple du cas où l'utilisateur ajoute des documents puis annule ensuite l'ajout de l'entité). Cela me fait penser qu'il faudrait prévenir l'utilisateur au retour de
Parfait, si ça a pu résoudre ton problème. Attention tout de même à changer le commentaire pour la compréhension, ce hack n'est plus dans ce cas pour une "saisie multiple avec préremplissage". Autres détails, il ne me semble pas que tu sois obliger de passer en argument pour ManageListDocumentsPanel un Model de DocumentAttachable, un DocumentAttachable devrait suffire. Pareil pour ReadDocumentPage et ManageDocumentPage. La question peut se poser de passer systématiquement entre classes des modèles ou directement les objets, mais actuellement la logique actuelle est de passer les objets, donc mieux vaut suivre la même logique (on créé les modèles quand on a besoin dans chaque classe). formulaire d'édition du document par un simple avertissement du style : "L'enregistrement du document s'effectuera à la validation du formulaire". Adrien -- 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
Le 28/02/2013 03:12, Adrien Cheype a écrit :
Autres détails, il ne me semble pas que tu sois obliger de passer en argument pour ManageListDocumentsPanel un Model de DocumentAttachable, un DocumentAttachable devrait suffire. Pareil pour ReadDocumentPage et ManageDocumentPage. La question peut se poser de passer systématiquement entre classes des modèles ou directement les objets, mais actuellement la logique actuelle est de passer les objets, donc mieux vaut suivre la même logique (on créé les modèles quand on a besoin dans chaque classe).
Je pense que je me suis embrouillé avec les modèle sur l'entité et le modèle sur la liste de document en même tant, et je pensais que c'était la combinaison des deux qui corrigeait le problème de rafraichissement des tableaux. J'ai supprimé le modèle dans les constructeurs et c'est bien seulement le modèle sur la liste de document qui est utile.
à moins que tu préfères charger ton objet dans la même session Hibernate que ta liste. C'est un document qui n'a pas forcement d'id (par encore sauvé), donc actuellement je n'ai que l'instance non rechargeable. Ok, je comprends mieux la subtilité. Tu ne peux pas utiliser un constructeur qui prend en argument un id et qui charge l'objet car celui-ci peut ne pas exister. Cela se passe uniquement quand on crée une entité quelconque puis qu'on ajoute un document et qu'on revient sur son édition avant d'avoir valider l'entité créer. Ce n'est qu'à la validation du formulaire de cet entité que l'ensemble des objets sont enregistrés en base. Par contre, ce que je ne saisis pas tout à fait, c'est que tu sembles effectuer l'ajout du fichier en base lorsqu'on valide l'ajout d'un document. Cette ajout ne devrait-il pas se faire qu'une fois l'entité enregistré pour éviter de laisser des fichiers orphelins ?? (exemple du cas où l'utilisateur ajoute des documents puis annule ensuite l'ajout de l'entité).
Non, je fais seulement : documentAttachable.addDocument(document); La sauvegarde en base ne se fait que quand le "documentAttachable" sera sauvegardé plus tard. À ne pas confondre avec: documentService.addDocumentContent(document, uploadedFile.getClientFileName(), uploadedFile .getContentType(), uploadedFile.getBytes()); qui fait du traitement d'image pour générer la miniature de l'image mais qui ne sauvegarde rien. Je trouve que ce code à plus sa place dans les services que c'est l'UI.
Cela me fait penser qu'il faudrait prévenir l'utilisateur au retour de formulaire d'édition du document par un simple avertissement du style : "L'enregistrement du document s'effectuera à la validation du formulaire". Je modifie le OK message dans ce sens.
-- Éric Chatellier - Code Lutin Tel: 02.40.50.29.28 - http://www.codelutin.com
participants (2)
-
Adrien Cheype -
Eric Chatellier