Hyperjaxb3を使用して、XSDスキーマからJPAエンティティを生成します。説明テキスト(UIのテキスト領域)に使用する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:simpleTypeにxsd:maxLength制限を設定すると、JPA@Column.lengthの値がmaxLengthになることがわかりました。xsd:stringのxsd:extensionであるxsd:simpleContentにxsd:rescrictionを設定するにはどうすればよいですか?拡張する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ファイル)で特定のタイプの列の長さを設定することもできますか(これが特定のタイプに使用したいormであることをhyperjaxbに通知してください)?または、それは完全に邪魔にならず、xsd:maxLengthを使用する必要があります(上記)Hyperjaxbのカスタマイズのためにグローバルに設定することができました:
ご協力いただきありがとうございます。