hyperjaxb3 xsd:JPA实体中的字符串长度

时间:2010-09-13 08:27:47

标签: jpa xsd jaxb hyperjaxb

我使用Hyperjaxb3从XSD架构生成JPA实体。我有一个xsd:string类型,我想用于描述文本(UI中的文本区域):

<xsd:complexType name="Description">
    <xsd:simpleContent>
        <xsd:extension base="**xsd:string**">
            <xsd:attribute name="abc" type="xsd:NCName" use="optional" />
        </xsd:extension>
    </xsd:simpleContent>
</xsd:complexType>

Hyperjaxb3生成带有属性值的类(实体)描述,注释如下:

@Basic
@Column(name = "VALUE_", **length = 255**)
public String getValue() {
    return value;
}

我的问题:

我看到如果我对xsd:simpleType设置xsd:maxLength限制,JPA @ Column.length的值为maxLength。如何在xsd:simpleContent上设置xsd:rescriction,即xsd:xsd:string的扩展名?我是否必须使用xsd:resctriction定义一个complexType,我将扩展?如果是的话,Hyperjaxb会根据我的限制生成@ Column.length。我试过以下:

   <xsd:simpleType name="DescriptionParent">
  <xsd:restriction base="xsd:string">
            <xsd:maxLength value="4096" />
  </xsd:restriction>
    </xsd:simpleType>
    <xsd:complexType name="Description">
        <xsd:simpleContent>
            <xsd:extension base="DescriptionParent">
                <xsd:attribute name="abc" type="xsd:NCName" use="optional" />
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>

但JPA列长度仍然是255。

是否也可以在我的JAXB自定义(* .xjb文件)中设置给定类型的列的长度(以某种方式让hyperjaxb知道这是我想要用于我的特定类型的orm)?或者它完全不受影响,应该使用xsd:maxLength(上图)我设法为Hyperjaxb自定义设置全局:

           的         

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

第二个问题:是的,您可以为简单类型配置全局类型映射。

请参阅Per-type customization for single properties

答案 1 :(得分:1)

第一个问题:它似乎是一个错误/缺失的功能,请提出问题here