I\'m migrating a project from JAXB 1.0 to JAXB 2.1 and I\'m having problems with the datatype mapping.
I\'m using the Ant xjc binding compiler, and I\'ve su
The reason you are getting Boolean
instead of boolean
is that you have minOccurs="0"
in your element definition. A null
value will be stored for an absent element.
The solution should be an external binding file that indicates that a primitive type should be used for optional values (see section 7.5.1 of the JAXB 2.2 specification).
The external binding file is specified using the -b
option with XJC.
xjc -b binding.xml my-schema.xsd
The following bugs have been opened to track the issue with optionalProperty="primitive"
.
If you don't like the way a class is generated in JAXB, then you can create a class yourself and have JAXB pull it in as part of the schema to class generation.
binding.xml
UsageAuthRateCharge
Create this class with the methods as you want them.
XJC Call
Use the -b
flag on the XJC call to specify the binding.xml
file
xjc -b binding.xml my-schema.xsd
What I was really hoping was that one of the readers might be a jaxb dev team member who could do the change easily in jaxb. User archenroot offered a possible solution in his comments on jaxb issue 927 (a duplicate of 926) which leads me to think that for the right person, it would be a simple job to fix jaxb
I'm the EclipseLink JAXB (MOXy) lead. I have reached out to my colleagues who do the JAXB reference implementation (they also work for Oracle). Below is the reply I got from them:
I’ve tested in trunk - and the problem exists. I’ll check code how easy is to fix it.
Hopefully you will be able to get a real fix for this issue.