que tienen 2 clases:campos Excluyendo en JAXB
@XmlRootElement
public class A {
private Long id;
private B b;
// setters and getters
}
y
@XmlRootElement
public class B {
private Long id;
private String field1;
private String field2;
// setters and getters
}
Por defecto, si transformo una instancia de la clase A
al XML, voy a tener todos sus campos (id
) y los campos referenciados B
clase (id
, field1
, field2
) como este:
<a>
<id>2</id>
<b>
<id>5</id>
<field1>test1</field1>
<field2>test3</field2>
</b>
</a>
¿Es posible modificar qué campos de la clase de referencia B
se incluyen en el XML de la clase A
? P.ej. Quiero decir que cuando me transformo una instancia de la clase A
, sólo quiero conseguir id
de la clase B
(no field1
y field2
campos), por lo que quiero llegar:
<a>
<id>2</id>
<b>
<id>5</id>
</b>
</a>
no quiero para anotar de forma permanente la clase B
(usando @XMLTransient
o @XMLElement
) para lograrlo, ya que hay casos en los que me quiere exportar toda clase B
como es (con id
, field1
y field2
.)
que simplemente no quieren exportar todos estos campos cuando la clase B
es referenciado desde A
.
¿Esto es posible con JAX-B?
Gracias! Supongo que complica las cosas un poco si estoy usando la implementación de Glassfish JAXB ... Parece que no hay una solución basada en anotaciones y necesito crear un XML de personalización adicional. –