schemagen.exe不会跳过@XmlTransient带注释的类

时间:2009-09-28 14:17:01

标签: java xsd jaxb

我注释了一个XmlAdapter类,如下所示:

@XmlTransient
public class DateTimeXmlAdapter extends XmlAdapter<String, DateTime> {

但是schemagen.exe会生成

<xs:complexType name="xmlAdapter" abstract="true">
    <xs:sequence/>
  </xs:complexType>

所以不要跳过课程,这是我的预期。 XmlAdapter确实是我的瞬态类继承的抽象类。我该怎么办?

我在字段中引用DateTimeXmlAdapter的原因是:

@XmlElement(name="StartDatetime")
@XmlJavaTypeAdapter(DateTimeXmlAdapter.class)
protected DateTime startDatetime;

我认为这是正确的。

1 个答案:

答案 0 :(得分:1)

看起来你已经告诉schemagen为你的java包中的所有内容生成模式类型,包括XmlAdapter子类。因此,它会看到您的适配器类,它被标记为@XmlTransient,因此不会为其生成模式类型。但是,它确实为XmlAdapter本身生成了一种模式类型。

您需要更改调用schemagen的方式,以便从代码生成中排除适配器类。 @XmlTransient在此处不合适,因此请从适配器类中删除它。