Como gerar as entidades filhas no processo de marshalling do JAXB utilizando @XmlID/@XmlIDREF

0 respostas
A

Ola,

Tenho as seguintes classes de negócio em um relacionamento 1 : N. Onde a entidade "Construtora" tem N "Empreendimentos".

class ConstrutoraImpl {
  @XmlID
  private long id;
  
  String nome;  
  String contato;  
  String telefone;
  
  @XmlIDREF
  @XmlList
  private List<EmpreendimentoImpl> empreendimentos;
}
class EmpreeendimentoImpl {
  @XmlID
  private long id: 
  String nome;
  String endereco;

  private ConstrutoraImpl construtora;
}

The java code to generate the XML file is:

JAXBContext context = (JAXBContext) JAXBContext.newInstance(new Class[]{ConstrutoraImpl.class, EmpreendimentoImpl.class});
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(construtora, System.out);

The resulting XML file is:

<?xml version="1.0" encoding="UTF-8"?>
<construtora>
   <id>75</id>
   <empreendimentos>74 75</empreendimentos>
   <contato>contato1</contato>
   <nome>nome1</nome>
   <telefone>telefone1</telefone>
</construtora>

Na geração do XML as informações sobre o filho "Empreendimentos" não estao sendo geradas no XML. Como é possivel gerar um XML completo com todas as entidades referenciadas por id? O Uso dos annotations @XmlID/@XmlIDREF serve para fazer a referencia por ID e nao contendo diretamente as entidades filhas.

Obrigado!
André Moutinho

Criado 28 de setembro de 2011
Respostas 0
Participantes 1