Referenz unterschiedlich nach Unmarshal

Hallo miteinander,

ich habe folgendes Problem: Es gibt Klasse A. Klasse A enthält zwei Listen: eine der Klasse B und eine der Klasse C. Ein Objekt der Klasse B besitzt immer eine Variable, die eines der Objekte der Klasse C (gleiches Objekt wie auch in der Liste der Klasse A) referenziert. So weit, so gut.

Jetzt speichere ich die Klasse A in eine XML-Datei mithilfe von JAXB. Das funktioniert auch ohne großes Zutun. Beim Laden der Datei habe ich allerdings das Problem, dass nun zwei unterschiedliche Objekte der Klasse C erstellt werden. Einmal das in der Liste in Klasse A und das Objekt in der Instanz der Klasse B. Modifiziere ich jetzt eines der beiden, hat es auf das andere keine Auswirkungen, und das ist schlecht.

JAXB vermerkt das Ganze in der Datei halt nicht als Referenz oder Ähnliches, sondern schreibt es in seiner Form halt noch mal. Und dann wird daraus an beiden Stellen wieder ein Objekt erstellt — die natürlich gleich sind, aber eben nicht diesselben.

Hat jemand da einen Rat, wie man das löst? Vielen Dank schon mal!

Hast Du denn in der XSD B an einer der beiden Stellen als Referenz zur anderen definiert?

bye
TT

Die Klassen waren zuerst da. Es gibt also keine Schemadatei. Lediglich das @XmlRootElement habe ich halt zur Klasse hinzugefügt …

Habe es derweil gelöst. Man muss der Klasse C einen eindeutigen Schlüssel geben, in etwa so:

    @XmlID
    @XmlAttribute
    private String key;
}```

und dann kann man anschließend die Referenz auch als solche definieren:

```public class B {
    @XmlIDREF
    @XmlAttribute
    private C c;
}```

Das Objekt muss selbstverständlich noch anderswo existieren und vollwertig gespeichert werden.