我有这样的实体结构:
@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}),但我想这样的注释不存在?这个解决方案的任何工作都可能会编写一些编组定制?