Java JAXB:如何始终为具有子类型的类型的元素包含xsi:type?

Java JAXB:如何始终为具有子类型的类型的元素包含xsi:type?,java,jaxb,xsitype,Java,Jaxb,Xsitype,让我们假设以下模式: <xsd:complexType name="User"> <xsd:sequence> <xsd:element name="name" type="xs:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="SpecialUser"> <xsd:complexContent

让我们假设以下模式:

<xsd:complexType name="User">
    <xsd:sequence>
        <xsd:element name="name" type="xs:string"/>
    </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SpecialUser">
    <xsd:complexContent>
    <xsd:extension base="User">
        <xsd:sequence>
            <xsd:element name="speciality" type="xs:string"/>
        </xsd:sequence>
    </xsd:extension>
    </xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="UserContainer">
    <xsd:sequence>
        <xsd:element name="user" type="User"/>
    </xsd:sequence>
</xsd:complexType>
我得到:

...
<user xsi:type="SpecialUser">
    <name>name</name>
    <speciality></speciality>
</user>
...
...
<user>
    <name>name</name>
</user>
...
我得到:

...
<user xsi:type="SpecialUser">
    <name>name</name>
    <speciality></speciality>
</user>
...
...
<user>
    <name>name</name>
</user>
...
。。。
名称
...

有没有一种方法可以将JAXB配置为在第二个示例中包括
xsi:type
(尽管是冗余的)?

您可以将复杂类型
User
asbtract,并且只使用它的扩展。也就是说,例如,您将引入一个新类型
NormalUser
。我无法修改架构:(