HYPERJAXB - DTYPE列长度增加,table_name形成非常长

时间:2013-10-26 18:42:15

标签: xml database jaxb hyperjaxb

我正在使用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)

请做好必要的事。

2 个答案:

答案 0 :(得分: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本身生成的。

答案 1 :(得分:0)

要增加DTYPE的长度,您还可以在bindings.xjb

中自定义它

例如。

jaxb:bindings node =“xs:complexType [@ name ='xxxx']”&gt;

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

/ JAXB:绑定&GT;

注意:hj:entity&gt;应该包含在xsd complextype中,而不是元素。

抱歉,我不知道当我添加'&lt;'时会出现什么问题+'j',这个词将是不可见的。