2010-03-15 17 views
5

come faccio a impedire a schemagen di aggiungere la super-classe allo schema?impedisce a schemagen di aggiungere la super-classe allo schema?

Ho provato a utilizzare XMLTransient sulla super-classe e sui relativi campi ma continuano a essere visualizzati nello schema.

ad esempio:

@XmlTransient 
public class Asset { 

    @XmlTransient 
    public Long ID; 
} 

public class Movie extends Asset { 

} 

crea questo 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

Il supertipo nello schema causa un problema? – skaffman

+0

sì, sta aggiungendo il campo ID, che non è necessario – shay

+0

Hmm @XmlTransient dovrebbe funzionare sull'attributo. Hai provato a metterlo sui getter? –

risposta

1

Hai trovato la risposta da soli. Se si aggiunge l'annotazione @XMLTransient a un campo, verrà omessa dalla generazione JAXB da Java a schema. Questo è indicato qui XMLTransient documentation.

Se lo strumento schemagen che si sta utilizzando non lo fa, ha un difetto nella sua implementazione.