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

时间:2015-02-10 09:59:20

标签: maven jpa jaxb hyperjaxb

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

那些XML文件是基于XSD的,我使用Hyperjaxb3 maven插件从中生成JPA类,一切似乎都运行正常。遗憾的是,我发现并发现即使在Hyperjaxb文档,Google和此处搜索了大量时间后,我也无法找到解决方案。

这是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>

该问题与标签元素有关。其XSD定义如下:

<xs:element name="label">
    <xs:complexType mixed="true">
        <xs:attribute ref="xml:lang"  use="required"/>
    </xs:complexType>
</xs:element>

生成的java类如下所示:

@XmlRootElement(name = "label")
@Entity(name = "Label")
@Table(name = "LABEL")
@Inheritance(strategy = InheritanceType.JOINED)
public class Label implements Serializable, Equals, HashCode {
    @XmlValue
    protected String content;

    ...

    @Basic
    @Column(name = "CONTENT")
    public String getContent() {
        return content;
    }

    @Basic
    @Column(name = "LANG")
    public String getLang() {
        return lang;
    }
}

我的问题是,如何定义内容的长度&#34;内容&#34;柱?目前,我一直在玩我的绑定文件

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

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

1 个答案:

答案 0 :(得分:1)

好的,正如所承诺的,这就是答案。

免责声明:我是作者。

考虑您提出的示例XSD:

<xs:element name="ten">
    <xs:complexType mixed="true">
        <xs:attribute name="label" type="xs:string"/>
    </xs:complexType>
</xs:element>
自定义内容属性的

I've figured out

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

但问题似乎是XJC将此自定义BOTH应用于类和属性。该定制未在课堂上得到承认。由于XJC对此非常严格,因此0.6.0会失败。

0.6.1中的{p> I've added a fix for this,但尚未发布,所以您现在必须自行检查并构建,直到0.6.1发布(还没有计划)。

PS。您可能会发现有关拉取请求的this tutorial有用。您在回购中做了更改,但实际上没有发送 PR。