JAXB中一个@XmlAttribute的两个@XmlJavaTypeAdapters?

JAXB中一个@XmlAttribute的两个@XmlJavaTypeAdapters?,java,jaxb,Java,Jaxb,我有一门课是这样的: @XmlRootElement(name = "PricingGroup") public class PricingGroup { ... @XmlAttribute(name = "partyName") @XmlJavaTypeAdapter(CustomerGroupRelationships.Adapter.class) private List<BilltoCustomer> billtoCustomers = n

我有一门课是这样的:

@XmlRootElement(name = "PricingGroup")
public class PricingGroup {

    ...

    @XmlAttribute(name = "partyName")
    @XmlJavaTypeAdapter(CustomerGroupRelationships.Adapter.class)
    private List<BilltoCustomer> billtoCustomers = new ArrayList<BilltoCustomer>();

    @XmlAttribute(name = "partyName")
    @XmlJavaTypeAdapter(PartyNames.Adapter.class)
    private PartyName partyName;  

    ...  
}
@XmlRootElement(name=“PricingGroup”)
公共类PricingGroup{
...
@xmldattribute(name=“partyName”)
@XmlJavaTypeAdapter(CustomerGroupRelationships.Adapter.class)
私有列表billtoCustomers=new ArrayList();
@xmldattribute(name=“partyName”)
@XmlJavaTypeAdapter(PartyNames.Adapter.class)
私人PartyName PartyName;
...  
}
JAXB似乎无法为一个属性映射两个
@XmlJavaTypeAdapter
s(这里是
partyName
)。如果我注释掉billtoCustomers上的注释或partyName上的注释,则从XML读取另一个成员变量时不会出现问题


如何同时获取这两个值?

您可以映射其中一个属性(
partyName
),然后使用
afterUnmarshal
事件派生其他属性(
billToCustomers
):

@XmlRootElement(name=“PricingGroup”)
公共类PricingGroup{
...
@XmlTransient
私有列表billtoCustomers=new ArrayList();
@xmldattribute(name=“partyName”)
@XmlJavaTypeAdapter(PartyNames.Adapter.class)
私人PartyName PartyName;
解组后无效(解组器u,对象父对象){
//从partyName派生billToCustomers
}
...  
}

当您将两个字段映射到同一个属性时,您希望发生什么?我只从XML中读取。将
@xmltransive
添加到其中一个字段也不起作用。
@XmlRootElement(name = "PricingGroup")
public class PricingGroup {

    ...

    @XmlTransient    
    private List<BilltoCustomer> billtoCustomers = new ArrayList<BilltoCustomer>();

    @XmlAttribute(name = "partyName")
    @XmlJavaTypeAdapter(PartyNames.Adapter.class)
    private PartyName partyName;  


   void afterUnmarshal(Unmarshaller u, Object parent) {
      // Derive billToCustomers from partyName
   }

    ...  
}