0

我正在尝试从 *.xsd 文件中生成一组 Java 类,这些文件都有一个通用的映射超类(称为 DataObject)。到目前为止,我已经设法使用 bindings.xjb 文件中的以下内容生成作为 DataObject 后代的类:

  <jaxb:globalBindings localScoping="toplevel">
        <xjc:superClass name="com.companyname.model.DataObject"/>
        <jaxb:serializable uid="1" />
    </jaxb:globalBindings>

我的问题是 Hyperjaxb3 生成了自己的主键,称为 hjid,但 DataObject 已经包含一个主键,我需要/想要使用它。

那么,如何阻止 Hyperjaxb3 为所有类生成 hjid?我已经尝试了我在网上找到的各种建议,但它们对我不起作用。

4

1 回答 1

1

hj:id您或使用自定义元素将现有属性之一标记为标识符属性。请参阅以下内容:

<xs:complexType name="myType">
    <xs:sequence>
        <!-- ... -->
        <xs:element name="id" type="xs:int" minOccurs="0">
            <xs:annotation>
                <xs:appinfo>
                    <hj:id>
                        <orm:column name="MY_ID"/>
                        <orm:generated-value strategy="SEQUENCE" generator="my-sequence"/>
                        <orm:sequence-generator name="my-sequence" sequence-name="MY_SEQ"/>
                    </hj:id> 
                </xs:appinfo>
            </xs:annotation>
        </xs:element>
        <!-- ... -->
    </xs:sequence>
</xs:complexType>

或者

<xs:element name="id" type="xs:int" minOccurs="0">
    <xs:annotation>
        <xs:appinfo>
            <hj:id/>
        </xs:appinfo>
    </xs:annotation>
</xs:element>
于 2015-05-14T01:33:42.353 回答