Я использую ниже зависимость JAXB:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-jaxb</artifactId>
<version>2.23.2</version>
</dependency>
У меня есть класс-обёртка:
@XmlRootElement(name = "trainings")
public class ArrayListWrapper {
private List<TrainingEntity> trainings = new ArrayList();
//getters & setters here
}
TrainingEntity имеет свойство:
@XmlIDREF
@XmlElementWrapper
public Set<ArticleEntity> getArticleEntities() {
return articleEntities;
}
ArticleEntity имеет свойства:
@JsonIgnore
@XmlID
public String getStringId() {
return article_id.toString();
}
@XmlIDREF
public Set<SectionEntity> getSectionEntitySet() {
return sectionEntitySet;
}
SectionEntity имеет свойство:
@JsonIgnore
@XmlID
public String getStringId() {
return section_id.toString();
}
Я настроил ресурс:
// return all trainings => xml
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("/all/xml")
public ArrayListWrapper getAllTrainingXml() {
ArrayListWrapper w = new ArrayListWrapper();
w.setTrainings(trainingRestService.getAllTrainings());
return w;
}
В выходном XML игнорируется collection sectionEntitySet :
xml просмотр снимка