2010-03-15 5 views
5

làm cách nào để ngăn chặn schemagen thêm siêu lớp vào lược đồ?ngăn chặn schemagen thêm siêu lớp vào lược đồ?

Tôi đã thử sử dụng XMLTransient trên siêu lớp và trên các trường của nó nhưng chúng vẫn hiển thị trong giản đồ.

ví dụ:

@XmlTransient 
public class Asset { 

    @XmlTransient 
    public Long ID; 
} 

public class Movie extends Asset { 

} 

tạo schema này:

<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

Siêu kiểu trong lược đồ có gây ra sự cố không? – skaffman

+0

có, thêm trường ID, không cần thiết – shay

+0

Hmm @XmlTransient sẽ hoạt động trên thuộc tính. Bạn đã thử đặt nó trên getters chưa? –

Trả lời

1

Bạn đã tìm thấy câu trả lời cho mình. Nếu bạn thêm chú thích @XMLTransient vào một trường, chú thích đó sẽ bị bỏ qua bằng cách tạo JAXB Java-to-schema. Điều này được nêu ở đây XMLTransient documentation.

Nếu công cụ schemagen bạn đang sử dụng không thực hiện việc này, thay vì có lỗi trong quá trình triển khai.