我正在使用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)
请做必要的事情。
发布于 2013-12-03 12:49:51
我遇到了同样的问题。
对于您的第一个问题,我认为您可以添加一个自定义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-05 06:15:58
要增加DTYPE的长度,还可以在bindings.xjb中对其进行自定义
例如:
jaxb:bindings node=“xs:”>@name=‘xxxx’jaxb
<hj:entity>
<orm:discriminator-column length="127"/>
</hj:entity>/jaxb:bindings>
注意: hj:entity>应该包含在xsd复杂类型中,而不是元素中。
对不起,我不知道有什么问题,当我添加'<‘+ 'j’时,这个词将是不可见的。
https://stackoverflow.com/questions/19610480
复制相似问题