JAXB如何排除与XmlRootElement类型相同的嵌套类型的编组?

时间:2015-09-14 17:55:53

标签: xml java-ee jpa jaxb entity

我有这样的实体结构:

@XmlRootElement
class Provider { 

   @OneToMany 
   Set<ProviderService> providerServices; 

   // other fields and properties 
}

@XmlRootElement 
class ProviderService  { 

   @ManyToOne 
   Provider provider; 
   @ManyToOne 
   Service service; 

   // other fields and properties 
}

@XmlRootElement 
class Service { 

   @OneToMany  
   Set<ProviderService> providerServices; 

   // other fields and properties 
}

如何在编组Provider实体时阻止JAXB生成第二个(相同的)Provider XML / JSON对象?

<provider>
  <!-- somthing --> 

  <provider-service> 
    <provider /> <!-- this repeats the same data as root provider UNWANTED -->  
    <!-- something --> 
    <service /> <!-- this is ok --> 
  </provider-service> 
</provider>

此外,在ProviderService中仅使用Provider属性上的@XmlTransient不是解决方案,因为我希望在将Service实体作为根元素编组时使用其ProviderServices列表生成此Provider元素(在这种情况下,我不会&#39; t想要重复嵌套的服务实体数据)

最好的解决方案就是在Provider上指定root实体@XmlExcludeNestedTypes({Provider.class})。 服务类上的@XmlExcludeNestedTypes({Service.class}),但我想这样的注释不存在?这个解决方案的任何工作都可能会编写一些编组定制?

0 个答案:

没有答案