JAXB如何排除与XmlRootElement类型相同的嵌套类型的封送?
我有这样的实体结构:JAXB如何排除与XmlRootElement类型相同的嵌套类型的封送?,xml,jakarta-ee,jpa,jaxb,entity,Xml,Jakarta Ee,Jpa,Jaxb,Entity,我有这样的实体结构: @XmlRootElement class Provider { @OneToMany Set<ProviderService> providerServices; // other fields and properties } @XmlRootElement class ProviderService { @ManyToOne Provider provider; @ManyToOne S
@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
}
@XmlRootElement
类提供程序{
@独身癖
设置提供者服务;
//其他字段和属性
}
@XmlRootElement
类ProviderService{
@许多酮
提供者;
@许多酮
服务;
//其他字段和属性
}
@XmlRootElement
类服务{
@独身癖
设置提供者服务;
//其他字段和属性
}
在编组提供程序实体时,如何防止JAXB生成第二个(相同的)提供程序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中仅使用@XmlTransient on Provider属性并不是一个解决方案,因为我希望在将服务实体编组为根元素及其ProviderServices列表时生成此Provider元素(在这种情况下,我不希望重复嵌套的服务实体数据)
最好的解决方案是在Provider和Provider上指定根实体@XmlExcludeNestedTypes({Provider.class})
@服务类上的XmlExcludeNestedTypes({Service.class}),但我想这样的注释不存在?此解决方案的任何解决方案可能都会编写一些编组定制