Bonjour,
Je tente de transformer mes entities en DTOs de manière à envoyer leurs informations sous la forme espérée par les clients.
Pour ce faire je m'aide de dozer qui semble prendre en charge les références cycliques imposées par les relations bidirectionnelles de mes entities.
Seulement voilà, lorsque vient la phase de sérialisation sur weblogic 10 (et donc d'envoi des DTOs aux clients par WebService) j'ai le droit à une jolie StackOverflowException...
Je vois bien où est le problème: A contient B qui contient A qui contient B etc.
L'unique solution que j'ai trouvé a été de :
1. marquer, au sein de B, A comme étant transient
2. ajouter, au sein de B, un attribut foreign key pour rappeler la relation qui existe entre B et A
Le nouveau problème qui se pose c'est que lorsque je souhaiterai utiliser ma classe B plus tard (dans un tout autre context) je ne pourrais plus envoyer B enrichie de A puisque A est transient... Je n'aurais d'autre choix que de créer spécifiquement une nouvelle DTO...
J'aurais aimé savoir finalement comment font les utilisateurs d'hibernate pour expédier des objets ayant des relations bidirectionnelles par l'intermédiaire de WebService par exemple.
Merci pour votre aide et conseils !
|