On Mon, 23 Apr 2012 14:21:08 +0200 Florian Desbois <fdesbois@codelutin.com> wrote:
Le seul souci dans Topia, c'est que les topiaId sont générés sur la méthode create des DAO. Mais vu que dans ce cas les créations se font en cascade, on ne passe pas par la méthode create. Deux solutions : - soit appeler la méthode create sur toute les nouvelles entités (cela reviendrait à parcourir toute la collection à mettre à jour...) - soit utiliser un autre mécanisme pour générer le topiaId. (via un IdentifierGenerator[4] ou un listener sur le persist/merge[5]). Avec hibernate pur, le IdentifierGenerator semble plus approprié. En JPA on peut cependant utiliser le PrePersist pour générer le topiaId. Chose étrange, en hibernate pur, le merge n'envoie pas d'évènement prePersist pour les nouvelles entités, contrairement à la spec JPA.
Je vois une troisième solution. On ajoute dans le constructeur par défaut de TopiaEntityAbstract la creation automatique du topiaId. De cette facon une Entity a toujours un topiaId, une entity sans topiaId n'existe pas. Et l'idée de dire que peut-etre des gens feraient du Topia sans le generateur est surement obsolete. Donc toutes les entites genere heritant de TopiaEntityAbstract auront aussi un topiaId. -- Benjamin POUSSIN -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com http://www.codelutin.com