xs:integer上的jaxbjavatype定制生成带有“";类型=字符串.class";

xs:integer上的jaxbjavatype定制生成带有“";类型=字符串.class";,java,jaxb2,xjc,Java,Jaxb2,Xjc,当使用XJC从XSD生成Java bean时,我需要将xs:integer映射到integer,而不是biginger。我在我的JAXB定制文件中添加了一个javaType标记(正如在本网站的许多答案中所说的),它工作得很好 但是在生成的代码中,我注意到这个@xmlement标记现在有一个type=String.class参数 所以现在我想知道,为什么String? 是因为parse和print方法正在从/转换为字符串对象吗 我尝试使用xjc:javaType而不是jaxb:javaType,允

当使用XJC从XSD生成Java bean时,我需要将
xs:integer
映射到
integer
,而不是
biginger
。我在我的JAXB定制文件中添加了一个
javaType
标记(正如在本网站的许多答案中所说的),它工作得很好

但是在生成的代码中,我注意到这个
@xmlement
标记现在有一个
type=String.class
参数

所以现在我想知道,为什么
String

是因为parse和print方法正在从/转换为字符串对象吗

我尝试使用
xjc:javaType
而不是
jaxb:javaType
,允许我用自定义的
MyAdapter
替换生成的
Adapter1
,但发生了完全相同的事情

如果这是正常的XJC行为,是否可以调整它以生成没有此参数的代码,或者使用除
String
以外的其他值

请注意,一切正常,但我想了解。
另外,我正在使用Enunciate来记录我的API,它似乎被
类型
的东西弄糊涂了(但这可能是Enunciate中的一个bug)


我正在使用JAXB RI 2.2.6,下面是一些代码片段来说明我的问题:

绑定.xjb


XSD中的字段定义


生成的Java字段

@xmlement(namespace=“…”,required=true,type=String.class)
@XmlJavaTypeAdapter(Adapter1.class)
@XmlSchemaType(name=“integer”)
受保护的整数myField;

我知道这是一个老问题,但对于仍在寻找答案的人来说:
使用type
xs:int
而不是
xs:integer
将创建一个普通的java int,而不是
Biginteger

int的问题是它不支持null,integer支持null。这都是真的,但我的问题不是关于目标java类型,而是关于生成的
@xmlement
注释。另外,如果我可以将XSD更改为使用
xs:int
(我不能,这就是我使用适配器的原因),我怀疑JAXB会根据字段的可空性生成
int
Integer
。指定
type=“int”
会生成
int
,并使用
type=“int”指定
minOccurs=0
生成一个
整数
@EricDuminil我发现我必须使用
nillable=“true”
而不是
minOccurs=0