可以/我应该在“propOrder”注释中列出JAXB映射bean的继承属性吗?

时间:2011-07-22 12:41:57

标签: java jaxb jaxb2

我有一堆JAXB带注释的类,它们有一个共同的字段,所以我把那个字段移到一个超类,就像这样

public class Base {
    protected SomeType commonField;
}

@XmlRootElement(name = "foo") @XmlType(propOrder = { "commonField", "fooField" })
public class Foo extends Base {
    private SomeOtherType fooField;
}

@XmlRootElement(name = "bar") @XmlType(propOrder = { "commonField", "barField" })
public class Bar extends Base {
    private SomeOtherType barField;
}

现在每当我对FooBar中的一个进行评分时,我都会IllegalAnnotationException抱怨commonField列在propOrder但在课程中没有出现。从propOrder注释中删除它一切正常,但我认为我应该列出所有映射的字段。我错过了什么?

1 个答案:

答案 0 :(得分:26)

继承类的字段/属性将始终显示在子类的字段/属性之前。这意味着默认情况下,您无法在子类型的propOrder中指定它们。但是,如果您将父类标记为@XmlTransient,则字段/属性将被视为属于子类,并且可以包含在propOrder中。