2011-10-19 3 views
4

JXC 스키마 생성 ant 태스크를 사용하여 열거 형을 무시하지 못하는 것 같습니다. 생성 된 XML과 관련이없는 형식 또는 사소한 구성 값을 나타 내기 위해 내부적으로 사용되는 여러 열거 형이 있습니다.JAXB JXC는 @XmlTransient와 관계없이 enum에 대한 스키마를 생성합니다.

enum을 @XmlTransient로 사용하여이 필드를 개체의 스키마에서 제외 할 수 있지만 enum에 대한 simpleType 설명자가 여전히 생성됩니다!

예 :

public class CustomerType { 

    @XmlTransient  
    public enum IsolationLevel { ALL, SAME_TYPE, SELECTED } 

    @XmlTransient 
    private Long id; 
    @XmlValue 
    private String name; 
    @XmlTransient 
    private IsolationLevel isolation = IsolationLevel.ALL; 
} 

생성 된 스키마 :

<xs:simpleType name="isolationLevel"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="ALL"/> 
     <xs:enumeration value="SAME_TYPE"/> 
     <xs:enumeration value="SELECTED"/> 
    </xs:restriction> 
</xs:simpleType> 

누구나 JXC이 열거 형을 무시하는 방법에 어떤 아이디어가? XML 매핑 된 속성이나 필드에 의해 사용되지 않고 열거 형 자체가 @XmlTransient로 표시됩니다 - 여전히 내 스키마의 일부입니까?

+0

[JAXB-794] (http://java.net/jira/browse/JAXB-794)와 유사합니다. JAXB 2.2.5에서 수정 되었습니까? –

답변

0

방금이 문제가 발생하여 내 POM이 2.2.11로 업데이트되었으며 해당 버전이 수정되었습니다. 코멘트에 언급 된 Jira 버그는 또한 2.2.5에서 수정되었음을 설명합니다. 이렇게하면 다음과 같이 세 가지 종속성을 추가해야했습니다.

<dependency> 
    <groupId>javax.xml.bind</groupId> 
    <artifactId>jaxb-api</artifactId> 
    <version>2.2.12</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-impl</artifactId> 
    <version>2.2.11</version> 
</dependency> 
<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-core</artifactId> 
    <version>2.2.11</version> 
</dependency>