ubuntuusers.de

jaxb-api XML Feld nicht persistieren

Status: Ungelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

TheIntruder

Avatar von TheIntruder

Anmeldungsdatum:
26. Juni 2011

Beiträge: 205

Ich habe folgende Klasse

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14

class W {
@XmlElement
protected Class1 class1;

@XmlElement
protected Class2 class2;

@XmlElement
protected Class3 class3;

@XmlElement
protected Class4 class4;
}

Ich will aber spaeter class4 nicht persistieren. Leider lassen sich @XmlTransient und @XmlElement nicht kombinieren.

Wie kann ich verhindern, dass class4 persistiert wird, obwohl es ein XMLElement ist?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13215

Du brauchst doch bloß @XmlTransient. Wo ist das Problem?

TheIntruder

(Themenstarter)
Avatar von TheIntruder

Anmeldungsdatum:
26. Juni 2011

Beiträge: 205

1. Es funktioniert nicht. 2. XMLTransient und XMLElement koennen nicht zusammen verwendet werden.

Ich probiere hier gerade einen Ansatz: XMLAdapter. Allerdings klappt da das unmarshalling nicht.

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13215

TheIntruder schrieb:

1. Es funktioniert nicht.

Was funktioniert nicht?

2. XMLTransient und XMLElement koennen nicht zusammen verwendet werden.

Das macht ja auch keinen Sinn: entweder Du mappst ein Feld / eine Property nach XML - oder halt nicht. Beides gleichzeitig geht nicht.

TheIntruder

(Themenstarter)
Avatar von TheIntruder

Anmeldungsdatum:
26. Juni 2011

Beiträge: 205

Naja, in dem Fall schon. Auf einer Seite kommen die Daten uber XML rein und sollen auf W gemappt werden. Danach sollen aber diese in eine DB geschrieben werden. Bei diesem Vorgang sollen dann aber nur 3 der Felder in die DB kommen.

Client → MiddleWare → Db

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13215

TheIntruder schrieb:

Naja, in dem Fall schon. Auf einer Seite kommen die Daten uber XML rein und sollen auf W gemappt werden. Danach sollen aber diese in eine DB geschrieben werden. Bei diesem Vorgang sollen dann aber nur 3 der Felder in die DB kommen.

Client → MiddleWare → Db

Ja, aber Du schreibst doch nicht XML in die DB, oder? Ich nehme mal an, dass Du da die Annotationen für Entities nimmst. Falls nicht, wäre es ein Fall von zwei verschiedenen XML-Mappings.

TheIntruder

(Themenstarter)
Avatar von TheIntruder

Anmeldungsdatum:
26. Juni 2011

Beiträge: 205

Doch, das ganze wird als XML reingeschrieben. Und genau, es sind 2 verschiedene Mappings, eine fuer den Eingang und eine fuer das Schreiben in die DB.

Was mich stutzig macht: In der Klasse gibt es bei mir noch ein byte[]. Ohne mein Zutun, wird dieses Feld aber nicht in die Db geschrieben. Kann das was mit dem XmlSchemaType zu tun haben? Muss ich die XSD aendern?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13215

TheIntruder schrieb:

Doch, das ganze wird als XML reingeschrieben. Und genau, es sind 2 verschiedene Mappings, eine fuer den Eingang und eine fuer das Schreiben in die DB.

Mein JAXB-Fu ist schon sehr rostig, aber innerhalb der Klasse wirst Du keine zwei unabhängigen Mappings definieren können. Dafür ist es auch nicht gedacht. Ggf. kannst Du es mit einem separat definierten Mapping machen. Oder Du lebst einfach damit, dass mehr in der DB ankommt, als soll.

TheIntruder

(Themenstarter)
Avatar von TheIntruder

Anmeldungsdatum:
26. Juni 2011

Beiträge: 205

Genau diese Antwort hatte ich befuerchtet. Danke trotzdem.

Antworten |