Исключая поля в JAXB

У меня есть 2 класса:

@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>

Is можно изменить , какие поля из ссылочного класса Bвключены в XML класса A? Например.Я хочу сказать, что когда я преобразовываю экземпляр класса A , я просто хочу получить id из класса B (нет field1 и field2), поэтому я хочу получить:

<a>
    <id>2</id>
    <b>
        <id>5</id>
    </b>
</a>

Я не хочу постоянно аннотировать класс B(используя @XMLTransientили @XMLElement), чтобы добиться этого, так как бывают случаи, когда я хочу экспортировать весь класс Bкак есть (с id, field1и поле2.)
Я просто не хочу экспортировать все эти поля, когда на класс Bссылаются из A.

Возможно ли это с JAX-B?

38
задан Tunaki 28 August 2015 в 12:40
поделиться