Wie ignoriere ich JAXB annotierte Eigenschaften in einer Elternklasse?

8

Wir haben eine Klasse mit einer JAXB-Anmerkung auf einer Eigenschaft. Wir haben dann mehrere Unterklassen, die den Rest der wichtigen Daten annotieren. Wir haben jedoch eine Unterklasse, in der die Annotation der übergeordneten Klasse ignoriert werden soll, damit sie nicht gemarshallt wird. Hier ist ein Beispielcode.

Elternklasse:

%Vor%

Nun zur Unterklasse:

%Vor%

Wenn ich eine Instanz von ConcreteClass erstelle, bekomme ich folgendes XML:

%Vor%

Wo ich XML so möchte:

%Vor%

Wir haben andere Implementierungen von Request, die allerdings die UUID benötigen, dies ist nur ein Spezialfall. Gibt es eine Möglichkeit, das UUID-Feld in meinem ConcreteRequest zu ignorieren?

    
prozaak 01.10.2012, 11:52
quelle

2 Antworten

6

Ich hoffe, ich habe dein Problem verstanden. Hier ist die Lösung.

JAXB bietet @XmlTransient(javax.xml.bind.annotation.XmlTransient) (javadoc) um jedes Feld während des Marshalling zu ignorieren.

Überschreiben Sie das Feld "uuid" als @XmlTransient in Ihrer abgeleiteten Klasse (ConcreteRequest.class) zusammen mit der entsprechenden Getter / Setter-Methode. Es ist auch notwendig, die Getter / Setter-Methoden zu überschreiben, diese werden während des Marshalling aufgerufen.

%Vor%

Dies überschreibt Ihr Basisklassenattribut.

Kontaktieren Sie mich für weitere Informationen.

    
omega 01.10.2012, 13:01
quelle
0

Sie können

verwenden %Vor%

für die Elternklasse und

%Vor%

für abgeleitete Klasse.

    
Roberto 28.10.2015 10:37
quelle

Tags und Links