У меня есть 2 классов:исключающие поля в JAXB
@XmlRootElement
public class A {
private Long id;
private B b;
// setters and getters
}
и
@XmlRootElement
public class B {
private Long id;
private String field1;
private String field2;
// setters and getters
}
По умолчанию, если преобразовать экземпляр класса A
к XML, у меня будет все его поля (id
) и ссылочные B
поля класса (id
, field1
, field2
), как это:
<a>
<id>2</id>
<b>
<id>5</id>
<field1>test1</field1>
<field2>test3</field2>
</b>
</a>
Можно ли изменить какие поля из ссылочного класса B
включены в XML класса A
? Например. Я хочу сказать, что, когда я преобразовать экземпляр A
класса, я просто хочу, чтобы получить id
от B
класса (без field1
и field2
полеев), так что я хочу получить:
<a>
<id>2</id>
<b>
<id>5</id>
</b>
</a>
Я не хочу постоянно аннотировать B
класс (с помощью @XMLTransient
или @XMLElement
), чтобы достичь его, так как есть случаи, в которых я хочу экспортировать весь B
класс как есть (с id
, field1
и field2
.)
Я просто не хочу, чтобы экспортировать все эти поля, когда класс B
от A
.
Возможно ли это с помощью JAX-B?
Спасибо! Я предполагаю, что это немного усложняет ситуацию, если я использую реализацию Glassfish JAXB ... Кажется, что нет никакого решения на основе аннотаций, и мне нужно создать дополнительный XML-файл настройки? –