Java hyperjaxb3:枚举问题

Java hyperjaxb3:枚举问题,java,xml,xsd,jaxb,hyperjaxb,Java,Xml,Xsd,Jaxb,Hyperjaxb,我试图使用hyperjaxb3从三个.xsd(C14054.xsd、C14054CodeLists.xsd和C14054DataTypes.xsd)创建一个关系模式,然后从XMLJava关系数据库封送数据 hyperjaxb3在创建关系模式方面已经比我评估的一个非常昂贵的商业工具做得更好了——但我不能让它完全实现我想要的Enum e、 g.在C14054.xsd中,“Provider”元素引用“RECID” <xs:element name="Provider"> <xs:co

我试图使用hyperjaxb3从三个.xsd(C14054.xsd、C14054CodeLists.xsd和C14054DataTypes.xsd)创建一个关系模式,然后从XMLJava关系数据库封送数据

hyperjaxb3在创建关系模式方面已经比我评估的一个非常昂贵的商业工具做得更好了——但我不能让它完全实现我想要的Enum

e、 g.在C14054.xsd中,“Provider”元素引用“RECID”

<xs:element name="Provider">
<xs:complexType>
  <xs:sequence>
    <xs:element ref="RECID" minOccurs="1" maxOccurs="1" />

其类型依次为“RECIDCodeType”

<xs:element name="RECID" type="RECIDCodeType" />

从C14054CodeLists.xsd

<xs:complexType name="RECIDCodeType">
<xs:simpleContent>
  <xs:extension base="RECIDCodeContentType" />
</xs:simpleContent>

它扩展了RECIDCodeContentType

<xs:simpleType name="RECIDCodeContentType">
<xs:restriction base="xs:string">
  <xs:enumeration value="14054">
    <xs:annotation>
      <xs:documentation>
        <Label>2014/15 AP student record</Label>
      </xs:documentation>
    </xs:annotation>
  </xs:enumeration>
</xs:restriction>

2014/15 AP学生记录

  • 枚举类型在数据库中创建为“查找表”,列为“HJID”和“VALUE”。表的主键是否可能是VALUE_u3;,而不是autonumber HJID
  • 也就是说,Provider.RECID(我在bindings.xjb中更改了列名)中唯一有效的条目(在数据库层)是否可以是“14054”

  • 在创建模式时,是否可以将枚举值持久化到关系表中
  • 也就是说,可以将14054作为一行添加到数据库中的Subpurposecodetype.VALUE_uu列中吗


    非常感谢任何人能给我们带来的光明

    希望这能在将来帮助其他人(感谢lexicore为我指明了正确的方向!):

    内联解决方案:

    <xs:simpleType name="RECIDCodeContentType">
    <xs:annotation>
        <xs:appinfo>
            <hj:id />
        </xs:appinfo>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="14054">
        <xs:annotation>
          <xs:documentation>
            <Label>2014/15 AP student record</Label>
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
    
    <jaxb:bindings schemaLocation="C14054CodeLists.xsd" node="/xs:schema">
        <!-- RECIDCodeType : Make VALUE Primary Key -->
        <jaxb:bindings node="xs:simpleType[@name='RECIDCodeContentType']">
            <hj:id />
        </jaxb:bindings>
    </jaxb:bindings>
    

    希望这将在将来帮助其他人(感谢lexicore为我指明了正确的方向!):

    内联解决方案:

    <xs:simpleType name="RECIDCodeContentType">
    <xs:annotation>
        <xs:appinfo>
            <hj:id />
        </xs:appinfo>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="14054">
        <xs:annotation>
          <xs:documentation>
            <Label>2014/15 AP student record</Label>
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
    
    <jaxb:bindings schemaLocation="C14054CodeLists.xsd" node="/xs:schema">
        <!-- RECIDCodeType : Make VALUE Primary Key -->
        <jaxb:bindings node="xs:simpleType[@name='RECIDCodeContentType']">
            <hj:id />
        </jaxb:bindings>
    </jaxb:bindings>
    

    我现在没有时间给出完整的答案,但这里有一些提示。(1) 您基本上希望将该值用作id。这应该可以通过
    hj:id
    自定义来实现。必须放在value属性上-我认为附加到
    xs:simpleContent
    。(2) 初始化数据库不在范围内。为此,你必须自己编写自定义DDL脚本。lexicore-你真是男人中的王者!1) 我想我已经尝试了所有可能的工作地点,但显然不行!你保证这是可能的,这是我需要有另一个裂缝,并得到它!我将在下面发布完整的答案。2) 不用担心。我们还提供了枚举/查找值的.csv文件,因此填充生成的模式不是什么大问题。但如果您想将其添加到hyperjaxb的未来版本中…;)非常感谢!hyperjaxb将为我们节省大量时间。这个项目接受捐款吗?我现在没有时间给出完整的答案,但这里有一些提示。(1) 您基本上希望将该值用作id。这应该可以通过
    hj:id
    自定义来实现。必须放在value属性上-我认为附加到
    xs:simpleContent
    。(2) 初始化数据库不在范围内。为此,你必须自己编写自定义DDL脚本。lexicore-你真是男人中的王者!1) 我想我已经尝试了所有可能的工作地点,但显然不行!你保证这是可能的,这是我需要有另一个裂缝,并得到它!我将在下面发布完整的答案。2) 不用担心。我们还提供了枚举/查找值的.csv文件,因此填充生成的模式不是什么大问题。但如果您想将其添加到hyperjaxb的未来版本中…;)非常感谢!hyperjaxb将为我们节省大量时间。这个项目接受捐款吗?