0

我正在使用 HYPERJAXB-3 -customized-toplink 并面临以下两个问题。请提供您的解决建议。

我的 XML 元素:例如:GeneralPref.CustomPref.Tradepref

1) 由于我的 XML 元素及其子元素的名称很长,因此生成的表/约束名称具有很长的名称(oracle 仅支持 30 个字符)例如:CREATE TABLE DOCUMENTMANAGEMENT_TRADESERVICEUTILITYSETUP ()

我们如何更改表名格式?

2) 根据http://java.sun.com/xml/ns/persistence/orm xsd ,自动表列“DTYPE”的最大大小为 31 。我在执行作业时收到以下错误消息。3)我如何通过 persisence.properties 或其他一些配置更改“DTYPE”列大小

内部异常:java.sql.SQLException:ORA-12899:列“TEST”的值太大。“DMTRADINGPARTNERSETUP”。“DTYPE”(实际:40,最大值:31)

请只做那些需要的。

4

2 回答 2

0

我遇到了同样的问题。

对于您的第一个问题,我认为您可以添加一个自定义 bingding.xjb 文件,该文件自定义您的列名少于 30 个长度。

例如。添加

<xmlns:hj="http://hyperjaxb3.jvnet.org/ejb/schemas/customizations" xmlns:orm="http://java.sun.com/xml/ns/persistence/orm" jaxb:extensionBindingPrefixes="hj orm">

在全局绑定中

<jaxb:bindings node="xs:complexType[@name='xxxx']//xs:element[@name='xxx']">

`<hj:basic>`

    `<orm:column name="xxxx" length="1000"/>`
`</hj:basic>`

</jaxb:bindings>

但是,对于您的第二个问题,我还没有弄清楚,因为我不知道在哪里自定义 DTYPE,因为 DTYPE 是由 hyperjaxb 而不是原始 XSD 本身生成的。

于 2013-12-03T04:49:50.633 回答
0

增加DTYPE的长度,也可以在bindings.xjb中自定义

例如。

jaxb:bindings node="xs:complexType[@name='xxxx']">

<hj:entity>
    <orm:discriminator-column length="127"/>
</hj:entity>

/jaxb:绑定>

注意: hj:entity> 应该包含在 xsd 复杂类型中,而不是元素中。

对不起,我不知道当我添加'<' + 'j'时,单词会不可见是什么问题。

于 2013-12-04T22:15:58.027 回答