I have a class that is annotated as the @XmlRootElement
with @XmlAccessorType(XmlAccessType.NONE)
. The problem that I am having is that the superclass's methods are being bound, when I do not want them to be bound, and cannot update the class. I am hoping there is an annotation that I can put on the root element class to prevent this from happening.
Example:
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class Person extends NamedObject {
@XmlElement
public String getId() { ... }
}
I would expect that only the methods annotated @XmlElement
on Person
would be bound and marshalled, but the superclass's methods are all being bound, as well. The resulting XML then has too much information.
How do I prevent the superclass's methods from being bound without having to annotate the superclass, itself?
According to this StackOverflow post: How can I ignore a superclass?
It is not possible with JAX-B to ignore the superclass without modifying the superclass. Quoting the relevant portion of that post:
Update2: I found a thread on java.net for a similar problem. That thread resulted in an enhancement request, which was marked as a duplicate of another issue, which resulted in the @XmlTransient annotation. The comments on these bug reports lead me to believe this is impossible in the current spec.