Я использую Hyperjaxb3 для создания сущностей JPA из схемы XSD. У меня есть тип xsd: string, который я хочу использовать для текста описания (текстовая область в пользовательском интерфейсе):
<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: maxLength на xsd: simpleType, JPA @ Column.length будет иметь значение maxLength. Как я могу установить xsd: rescriction для xsd: simpleContent, то есть xsd: расширение xsd: string? Должен ли я определить complexType с xsd: resctriction, который я буду расширять? И если да, 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, что это форма, которую я хочу использовать для моего конкретного типа)? Или это совсем не так, и следует использовать xsd: maxLength (выше) Мне удалось установить его глобально для настройки Hyperjaxb:
Спасибо за вашу помощь.