当使用带有@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
我怎样才能实现这样的定制?
我尝试查看自定义指南并获得带有测试的源代码,但找不到任何相关内容。