我正在使用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)
请做好必要的事。
答案 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',这个词将是不可见的。