2010-03-15 7 views
5

Wie verhindere ich, dass Schemagen die Superklasse zum Schema hinzufügt?verhindern, dass Schemagen die Superklasse zum Schema hinzufügt?

Ich habe versucht, XMLTransient auf der Super-Klasse und auf ihren Feldern, aber sie zeigen immer noch im Schema.

zum Beispiel:

@XmlTransient 
public class Asset { 

    @XmlTransient 
    public Long ID; 
} 

public class Movie extends Asset { 

} 

schafft dieses Schema:

<xs:complexType name="asset"> 
<xs:sequence> 
<xs:element name="ID" type="xs:long" minOccurs="0"/> 
</xs:sequence> 
</xs:complexType> 

<xs:complexType name="movie"> 
<xs:complexContent> 
<xs:extension base="asset"> 
<xs:sequence/> 
</xs:extension> 
</xs:complexContent> 
</xs:complexType> 

the schema that i would like to see is : 

<xs:complexType name="movie"> 
<xs:complexContent> 
<xs:sequence/> 
</xs:extension> 
</xs:complexContent> 
</xs:complexType> 
+0

Ist der Supertyp im Schema ein Problem? – skaffman

+0

ja, es ist das ID-Feld hinzufügen, die nicht benötigt wird – shay

+0

Hmm @ XmlTransient sollte auf das Attribut arbeiten. Hast du versucht, es auf die Getter zu setzen? –

Antwort

1

Sie die selbst Antwort gefunden haben. Wenn Sie die Annotation @XMLTransient zu einem Feld hinzufügen, wird sie von der Java-zu-Schema-Generierung von JAXB ausgelassen. Dies wird hier angegeben XMLTransient documentation.

Wenn Ihr schemagen Tool, das Sie verwenden, dies nicht tut, hat es einen Fehler in der Implementierung.