Boa noite pessoal… to precisando configurar um webservice restful… produzindo xml e json…
Criei um projeto para teste antes de implementar no sistema de destino de fato…
Configurei o Jersey… certinho… criei duas entidades uma chamada Banda e outra Integrante…
Criei as classes ilmpas… sem nenhuma anotação JPA… criei um map estático para simular o BD… e OK…
Sem relacionar as classes ainda… fiz os testes… GET, POST, PUT e DELETE funcionando certinho… tanto com XML como JSON…
Relacionei as classes como: Uma Banda para muitos Integrantes.
Eu consigo gerar o XML e JSON certinho de Uma Banda com os seus respectivos integrantes
Chegou o momento do problema… > Não consigo gerar o o xml de um Integrante com sua respectiva banda.
Entidade Banda
@XmlRootElement(name = "Banda")
@XmlAccessorType(XmlAccessType.NONE)
public class Banda implements Serializable {
@XmlElement(name = "id")
private Integer id;
@XmlElement(name = "nome")
private String nome;
@XmlElement(name = "anoDeFormacao")
private Integer anoDeFormacao;
@XmlElementWrapper(name = "integrantesWrapper")
@XmlElement(name = "integrante")
private List<Integrante> integrantes;
public Banda() {
}
public Banda(Integer id, String nome, Integer anoDeFundacao) {
this.id = id;
this.nome = nome;
this.anoDeFormacao = anoDeFundacao;
}
public Integer getId() {
return id;
restante da classe
Entidade Integrante
@XmlRootElement(name = "Integrante")
@XmlAccessorType(XmlAccessType.NONE)
public class Integrante implements Serializable{
@XmlElement(name = "id")
private Integer id;
@XmlElement(name = "nome")
private String nome;
/*
@XmlTransient se eu usar só essa anotaçào para o atributo gera o XML do integrante sem a banda
@XmlElement se eu usar só essa anotação gera referência ciclica no momento de gerar o XML
@XmlInverseReference(mappedBy = "integrantes") se eu usar essa anotação gera o XML sem a banda e não da referência ciclica, ou seja, o mesmo que o Transiente */
private Banda banda;
public Integrante() {
}
public Integrante(Integer id, String nome, Banda banda) {
this.id = id;
this.nome = nome;
this.banda = banda;
}
public Integer getId() {
return id;
}
restante da classe..
Segui diversos tutoriais e documentações mas não consegui fazer funcionar.
Algumas referências que segui:
http://blog.bdoughan.com/2013/03/moxys-xmlinversereference-is-now-truly.html
http://www.eclipse.org/eclipselink/documentation/2.4/moxy/shared_reference_relationships005.htm
http://docs.oracle.com/cd/E23943_01/doc.1111/e25034/jpatoxml.htm
Alguém tem alguma solução ? Utilizando essas tecnologias ?
Ja pensei até em utilizar o XStream… mas estou segurando a onda ainda…