I have 2 classes:
@XmlRootElement
public class A {
private Long id;
private B b;
// setters and getters
}
and
@XmlRootElement
public class B {
private Long id;
private String field1;
private String field2;
// setters and getters
}
By default, if I transform an instance of class A
to the XML, I will have all its fields (id
) and the referenced B
class fields (id
, field1
, field2
) like this:
<a>
<id>2</id>
<b>
<id>5</id>
<field1>test1</field1>
<field2>test3</field2>
</b>
</a>
Is is possible to modify what fields from referenced class B
are included in the XML of the A
class? E.g. I want to say that when I transform an instance of A
class, I just want to get id
from the B
class (no field1
and field2
fields), so I want to get:
<a>
<id>2</id>
<b>
<id>5</id>
</b>
</a>
I don't want to permanently annotate the B
class (using @XMLTransient
or @XMLElement
) to achieve it, as there are cases in which I want to export whole B
class as is (with id
, field1
and field2
.)
I just don't want to export all these fields when the B
class is referenced from A
.
Is this even possible with JAX-B?
You can use annotation @XmlTransient
to ignore fields. Put this annotation on field itself or its getter.