我使用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自定义设置全局:
的
感谢您的帮助。