2016-12-20 48 views
2

應避免以下討論。這個問題不是:JAXB綁定xs:整數到Java整數而不是BigInteger

  • 使用xs:int而不是xs:integer。
  • 使用原始int而不是Integer。
  • 你爲什麼需要這個。
  • 你該怎麼做,如果等

問題:

我想JAXB綁定聲明的例子來覆蓋XS的默認映射:整數到Java的BigInteger,使xjc將生成Java Integer。

例如

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

應該產生

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

,而不是

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

如果相應的文檔元素包含≥2³¹的值,您希望JAXB做什麼? – VGR

+0

沒有太擔心。 –

+0

這有沒有答案?我發現它使用谷歌。 –

回答

0

您可以添加以下到您的綁定文件:

<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; 
}