In Json: Was genau ist eine "unmittelbare selbst-Referenz"
Stellt sich vielleicht die Frage scheint dumm, aber für mich ein Referenz-Zyklus wird beispielsweise das Objekt A bezieht sich ein Objekt B UND das Objekt B bezieht sich das Objekt A.
Ich arbeite auf einer android-Anwendung die Kommunikation mit einem GAME-server mit der Objektivierung DB.
Mein Modell ist ganz einfach, aber ich bekomme eine Fehlermeldung:
org.codehaus.jackson.map.JsonMappingException: Direct self-reference leading to cycle (through reference chain: java.util.ArrayList[0]->com.my.model.MyMessage["senderKey"]->com.googlecode.objectify.Key["root"])
Hier ist mein Modell: ein MyMessage bezieht sich ein Benutzername (der Benutzername NICHT finden eine MyMessage...
Hier ist der code:
public class MyMessage implements Serializable {
private static final long serialVersionUID = -1075184303389185795L;
@Id
private Long id;
@Unindexed
private String sendMessage;
@Unindexed
private String answerMessage;
private MessageStatus status = MessageStatus.FREE;
@Parent
Key<MyUser> senderKey;
Key<MyUser> answererKey;
@SuppressWarnings("unused")
private MyMessage() {
}
public MyMessage(MyUser user, String message) {
super();
this.sendMessage = message;
this.senderKey = new Key<MyUser>(MyUser.class, user.getId());
}
[... getters and setters ...]
}
.
public class MyUser implements Serializable {
private static final long serialVersionUID = 7390103290165670089L;
@Id private String id;
@SuppressWarnings("unused")
private MyUser() {
this.setId("default");
}
public MyUser(String mail) {
this.setId(mail);
}
public void setId(String mail) {
this.id = mail;
}
public String getId() {
return id;
}
}
Also, was ist genau eine Direkte Selbstreferenz ?? Was ist Los mit meinem Modell??
Danke.
- Blick auf die
Exception
wieder. Es beschwert sich überKey
, nichtMyUser
. Was istKey.root
? Bitte auch die definition vonKey
. - com.meine.Modell.MyMessage["senderKey"]->com.googlecode.objektivieren.Taste["root"]). Aussehen: - Taste.Wurzel ist von com.googlecode.objektivieren.Schlüssel. Es ist nicht Teil meines Codes...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Key
intern enthält die Referenz zum übergeordnetenKey
ist dies Art und Weise eine Referenz auf iteslf, d.h. eine direkte Selbstreferenz. Dies könnte möglicherweise dazu führen, Endlosschleife, so Jackson wirft einen Fehler.Bottom line:
Key
ist nicht serialisierbar sind out-of-the-box. Sie vielleicht durch das schreiben einer benutzerdefinierten Jackson serializer/deserializer.