当使用带有@Embedded的属性时,列以特定模式命名,该模式不与我的特定目标数据库对齐,因此我想自定义生成的表名。
在我的特定用例中,我无法更改架构,并且当前已在bindings.xjb中自定义到目标数据库。
我有一个“项目”,我只想坚持这个价值:
<xs:complexType name="item">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="unwantedAttr1" type="xs:string"/>
<xs:attribute name="unwantedAttr2" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
该项目在“MyGroup”(及其他)中用作元素类型。
<xs:element name="MyGroup">
<xs:complexType>
<xs:sequence>
<xs:element name="A01" type="item" />
<xs:element name="A02" type="item" />
<xs:element name="A03" type="item" />
</xs:sequence>
</xs:complexType>
</xs:element>
我想得到以下结果表:
HJID | A01 | A02 | A03
在我的bindings.xjb中,我将项目设置为嵌入,将不需要的属性设置为@Transient:
<jaxb:bindings node="//xs:complexType[@name='item']">
<hj:embeddable />
</jaxb:bindings>
<jaxb:bindings node="//xs:attribute[@name='unwantedAttr1']">
<annox:annotate>
<annox:annotate annox:class="javax.persistence.Transient" />
</annox:annotate>
</jaxb:bindings>
<jaxb:bindings node="//xs:attribute[@name='unwantedAttr2']">
<annox:annotate>
<annox:annotate annox:class="javax.persistence.Transient" />
</annox:annotate>
</jaxb:bindings>
我可以用
更改列名<jaxb:bindings node="xs:element[@name='MyGroup']//xs:element[@name='A01']">
<hj:column name="A01" />
</jaxb:bindings>
但这只能让我到目前为止:
HJID | A01_VALUE | A02_VALUE | A03_VALUE
如何实施此类自定义?
我尝试查看customizations guide并手头有tests源代码,但无法找到任何相关内容。