我正在尝试从* .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?我已经尝试过我在网上找到的各种建议,但它们对我不起作用。
答案 0 :(得分: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>
OR
<xs:element name="id" type="xs:int" minOccurs="0">
<xs:annotation>
<xs:appinfo>
<hj:id/>
</xs:appinfo>
</xs:annotation>
</xs:element>