Sauvegarde d'une hiérarchie d'objet - Java - Programmation
MarshPosté le 06-05-2008 à 22:23:49
Je dois parcourrir une hiérarchi d'objet pour en sauvegarder le contenu:
public class PersonBean { /*Some Field*/ private BabyBean Baby; private PersonBean Mother; }
public class BabyBean extends PersonBean{ /*Some Field*/ }
PersonBean p = new PersonBean(); PersonBean m = new Personbean(); p.setMother(m); BabyBean b = new BabyBean(); m.setBaby(b);
//Je dois Sauvegarder P Save(p);
Jusque là tout va bien, j'utilise la réflection, sauvegarde les POJO, si je vois un objet (PersonBean,Babybean) je sauvegarde set Objet.
Le problème survient si je rajoute la ligne (Avant la sauvegarde de p): b.setMother(b);
J'obtiens un memory stack overflow, car je boucle à n'en plus finir sur (La mere a un bébé, le bébé à une mère ....).
Si quelqu'un pourrait m'éclairer se serait très apprécié.
J'ai pensé à lever un flag si l'objet est en ''Instance de sauvegarde" de sorte que Bébé détecte que sa Mère est déjà en ''Instance de sauvegarde" et n'essait donc pas de la sauvegarder. Je n'aime cependant pas beaucoup cette solution.
Marsh Posté le 06-05-2008 à 22:23:49
Je dois parcourrir une hiérarchi d'objet pour en sauvegarder le contenu:
public class PersonBean {
/*Some Field*/
private BabyBean Baby;
private PersonBean Mother;
}
public class BabyBean extends PersonBean{
/*Some Field*/
}
PersonBean p = new PersonBean();
PersonBean m = new Personbean();
p.setMother(m);
BabyBean b = new BabyBean();
m.setBaby(b);
//Je dois Sauvegarder P
Save(p);
Jusque là tout va bien, j'utilise la réflection, sauvegarde les POJO, si je vois un objet (PersonBean,Babybean) je sauvegarde set Objet.
Le problème survient si je rajoute la ligne (Avant la sauvegarde de p):
b.setMother(b);
J'obtiens un memory stack overflow, car je boucle à n'en plus finir sur (La mere a un bébé, le bébé à une mère ....).
Si quelqu'un pourrait m'éclairer se serait très apprécié.
J'ai pensé à lever un flag si l'objet est en ''Instance de sauvegarde" de sorte que Bébé détecte que sa Mère est déjà en ''Instance de sauvegarde" et n'essait donc pas de la sauvegarder. Je n'aime cependant pas beaucoup cette solution.