JAXB绑定xs:integer到Java Integer而不是BigInteger

应避免以下讨论.这个问题不是:

>使用xs:int而不是xs:integer.
>使用原始int而不是Integer.
>为什么你需要这个.
>如果等你要做什么

题:

我想要一个jaxb绑定声明的示例来覆盖xs:integer到Java BigInteger的默认映射,这样xjc就会生成Java Integer.

例如

<xs:attribute name="id" type="xs:integer"/>

应该产生

@XmlAttribute(name = "id")
Integer id;

并不是

@XmlAttribute(name = "id")
BigInteger id;

最佳答案 您可以将以下内容添加到绑定文件中:

<globalBindings>
    <javaType xmlType="xs:integer" name="java.lang.Integer"/> 
</globalBindings>

这将产生,例如:

@XmlAttribute(name = "id")
@XmlJavaTypeAdapter(Adapter1 .class)
protected Integer id;

public int getId() {
    if (id == null) {
        return new Adapter1().unmarshal("0");
    } else {
        return id;
    }
}

public void setId(Integer value) {
    this.id = value;
}
点赞