【发布时间】:2015-10-27 17:38:47
【问题描述】:
我有一个 xsd 文件,其中包含一个具有枚举约束的元素:
<xs:complexType name="Request">
<xs:sequence>
<xs:element name="CommsAddress" type="xs:string" />
<xs:element name="CommsAddressType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="EMAIL"/>
<xs:enumeration value="PHONE"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
...
我希望生成的 Java 类中的 CommsAddressType 字段是具有值 EMAIL 和 PHONE 的生成枚举。反过来,我希望 Hibernate 自动生成我的数据库模式,其中包含一个 CommsAddressType 表,其中包含两行值 EMAIL 和 PHONE。然后Request 表可以简单地使用CommsAddressTypeId 列引用这些。
目前,Hyperjaxb3 生成我的 Request 类,其中 CommsAddressType 字段类型为 String:
@XmlElement(name="CommsAddressType")
protected String commsAddressType
并生成架构,以便Request 表具有CommsAddressType 类型为VARCHAR 的列。这显然会导致大量不必要的重复数据。
有什么方法可以实现我上面描述的吗?另外,由于我将 xsd 暴露给我的客户,我希望尽可能避免在架构中包含任何 jaxb 或 hyperjaxb 标记。
【问题讨论】:
标签: hibernate xsd jaxb hyperjaxb