我正在成功地使用jaxb2 2-基本的继承支持。我试图添加更多的继承,但不知道如何在特定情况下做到这一点。我有这个XSD片段:
<xsd:complexType name="hbm-any-mapping">
<xsd:element name="discriminator">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="type" type="xsd:string" minOccurs="0" maxOccurs="1" />
<xsd:element name="column" type="orm:column" minOccurs="0" maxOccurs="1" />
<xsd:element name="mapping" type="orm:hbm-any-discriminator-value-mapping" minOccurs="1" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:complexType>在我的XJC绑定中,我最初是这样做的,它可以工作:
<bindings node="//xsd:complexType[@name='hbm-any-mapping']">
<inheritance:implements>...</inheritance:implements>
</bindings>
<bindings node="//xsd:complexType[@name='hbm-any-discriminator-value-mapping']">
<inheritance:implements>...</inheritance:implements>
<property name="CorrespondingEntityName"/>
<bindings node=".//xsd:attribute[@name='value']">
<property name="DiscriminatorValue"/>
</bindings>
</bindings>现在,我正在尝试将接口应用于discriminator及其子节点的映射。我试过这个:
<bindings node="//xsd:complexType[@name='hbm-any-mapping']">
<inheritance:implements>...</inheritance:implements>
<bindings node=".//xsd:element[@name='discriminator']">
<inheritance:implements>...</inheritance:implements>
<bindings node=".//xsd:element[@name='mapping']">
<inheritance:implements>...</inheritance:implements>
<property name="valueMappings"/>
</bindings>
</bindings>
</bindings>但这行不通。我没有收到错误,但是继承没有应用于鉴别器,也没有为映射应用属性命名。
有什么指示吗?
谢谢!
发布于 2022-05-06 20:36:57
我将它们分解为单独的、命名为complexType的定义,并通过选择那些complexTypes应用继承。它起作用了。
https://stackoverflow.com/questions/72146812
复制相似问题