2014-04-25 6 views
1

나는 ParentChild 클래스를 가지고있다.JaxB, Eclipse Moxy, polymorhpic mapping

House 클래스는 Child 개체를 참조 할 수있는 Parent 유형의 필드가 있습니다. Eclipse Moxy를 사용하여 XML에 매핑해야한다. 같은

그것의 XSD가 될 것이다 일 :

<xs:complexType name="Parent" abstract="true"> ...other fields...

<xs:complexType name="Child" > <xs:extension base="Parent"> ...other fields...

<xs:element name="child" type="Child" substitutionGroup="parent" /> <xs:element name="parent" type="Parent" abstract="true" />

<xs:complexType name="House"> <xs:element ref="parent"/>

하우스 클래스는 부모를 가리 키도록 JAXBElement 첨부를 포함 : @XmlElementRef(name = "parent", namespace = "abc", type = JAXBElement.class) protected JAXBElement<? extends Parent> parent;

House 클래스를 House.oxm.xml 파일에 매핑하면 어떻게 다형 매핑이 올바르게 작동합니까?

<java-type name="House" xml-accessor-type="NONE"> <java-attributes> <xml-element-ref java-attribute="?????????"/>

내가 사용하는 '@'매핑에 시도했지만 작동하지 않습니다 - 그냥 XML에 객체의 참조 문자열 (@Parent)를 추가합니다.

답변

1

전체 문제 때문에이었다 : 많은 헛된 시도를 해결하는

@XmlElementRef(name = "parent", namespace = "abc", type = JAXBElement.class) protected JAXBElement<? extends Parent> parent;

후,이 결함 건너 온 : 해당 코드를 참조하면 https://bugs.eclipse.org/bugs/show_bug.cgi?id=327811

, 나는 그것을 해결 것을보고 상황은 매우 유사하지만 JAXBElement와 같은 다른 항목을 사용하거나 @XmlElementRef에 다른 매개 변수를 제공하지 않고 수퍼 유형에서 @XmlElementRef 주석 만 사용했습니다.

나는 그것을 시도했지만 (oxm 파일에서 맵핑을 제거했습니다) 매력처럼 작동했습니다! 나는이 답변이 같은 문제를 겪고있는 다른 사람들에게 도움이되기를 바랍니다.