How do I prevent JAXB from binding superclass methods of the @XmlRootElement when marshalling?
annotations, inheritance, java, jaxb, xml
Solution
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.
Problem
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?