Maven 使用Hyperjaxb在生成的JPA模型上设置列长度

Maven 使用Hyperjaxb在生成的JPA模型上设置列长度,maven,jpa,jaxb,hyperjaxb,Maven,Jpa,Jaxb,Hyperjaxb,在我当前的项目中,我需要处理一组包含一些财务信息的XML文件,然后对这些数据进行一些复杂的查询,以填充数据库模式 这些XML文件是基于XSD的,我使用Hyperjaxb3 maven插件从中生成JPA类,一切似乎都很正常。不幸的是,我发现并解决了一个问题,即使在花了大量时间搜索Hyperjaxb文档、Google和here之后,我仍然无法找到解决方案 这是XML文件的一个片段: <metrics> <metric name="pi1" type="decimal" pe

在我当前的项目中,我需要处理一组包含一些财务信息的XML文件,然后对这些数据进行一些复杂的查询,以填充数据库模式

这些XML文件是基于XSD的,我使用Hyperjaxb3 maven插件从中生成JPA类,一切似乎都很正常。不幸的是,我发现并解决了一个问题,即使在花了大量时间搜索Hyperjaxb文档、Google和here之后,我仍然无法找到解决方案

这是XML文件的一个片段:

<metrics>
    <metric name="pi1" type="decimal" periodType="instant" creationDate="">
        <label xml:lang="es">Número de personal remunerado</label>
        <label xml:lang="en">Number of staff recipient</label> 
    </metric>
    <metric name="md2" type="monetary" periodType="duration" creationDate="">
        <label xml:lang="es">Importe devengado en el período actual (flujo)</label>
        <label xml:lang="en">Amount awarded in the current period (flow)</label>
    </metric>
</metrics>
我的问题是,如何定义“内容”列的长度?目前,我一直在玩弄我的绑定文件

<jaxb:bindings node="//xs:element[@name='label']">
    <hj:basic>
        <orm:column length="1024"/>
    </hj:basic>
</jaxb:bindings>


但没有任何区别。哦,顺便说一句,如果可能的话,应该避免对XSD文件进行更改,因为它是由第三方提供的。

好的,正如承诺的那样,下面是答案

免责声明:我是作者

考虑您建议的示例XSD:

<xs:element name="ten">
    <xs:complexType mixed="true">
        <xs:attribute name="label" type="xs:string"/>
    </xs:complexType>
</xs:element>

自定义内容属性的:

    <jaxb:bindings node="xs:element[@name='ten']/xs:complexType">
        <hj:basic name="content">
            <orm:column length="1024"/>
        </hj:basic>
    </jaxb:bindings>

但问题似乎是XJC将这种定制应用于类和属性。未在类上确认该自定义。由于XJC对此要求非常严格,因此它在
0.6.0
中失败

0.6.1
中,但它还没有发布,因此您现在必须签出并自行构建,直到0.6.1发布(目前还没有计划)


另外,你可能会发现拉请求很有帮助。您在回购协议中做了更改,但实际上没有给我发送公关。

作者在这里。下一次直接问,所以,我在看标签。您正朝着正确的方向前进,唯一的问题是-如何定制混合内容属性。我会试试并报告。你可以在这里翻出一个例子来帮忙:谢谢。按照建议创建公关。没有合并它只是为了避免任何问题(没有太多使用Github的经验)感谢@lexicore,感谢您的修复和教程:)
<xs:element name="ten">
    <xs:complexType mixed="true">
        <xs:attribute name="label" type="xs:string"/>
    </xs:complexType>
</xs:element>
    <jaxb:bindings node="xs:element[@name='ten']/xs:complexType">
        <hj:basic name="content">
            <orm:column length="1024"/>
        </hj:basic>
    </jaxb:bindings>