2015-05-14 3 views
0

Я пытаюсь создать набор классов Java из * .xsd-файлов, которые имеют общий сопоставленный суперкласс (называемый DataObject). До сих пор мне удалось получить его для создания классов, которые являются потомками DataObject, используя следующие в файле bindings.xjb:Hyperjaxb3: Как заставить его использовать идентификатор суперкласса?

<jaxb:globalBindings localScoping="toplevel"> 
     <xjc:superClass name="com.companyname.model.DataObject"/> 
     <jaxb:serializable uid="1" /> 
    </jaxb:globalBindings> 

Моя проблема заключается в том, что Hyperjaxb3 генерирует свой собственный первичный ключ с именем hjid , но DataObject уже содержит первичный ключ, и мне нужно/нужно использовать его.

Итак, как остановить Hyperjaxb3 от генерации hjid для всех классов? Я уже пробовал различные предложения, которые я нашел в Интернете, но они не работали для меня.

ответ

1

Вы или отметите одно из существующих свойств как свойство идентификатора, используя элемент настройки hj:id. Смотрите следующее:

<xs:complexType name="myType"> 
    <xs:sequence> 
     <!-- ... --> 
     <xs:element name="id" type="xs:int" minOccurs="0"> 
      <xs:annotation> 
       <xs:appinfo> 
        <hj:id> 
         <orm:column name="MY_ID"/> 
         <orm:generated-value strategy="SEQUENCE" generator="my-sequence"/> 
         <orm:sequence-generator name="my-sequence" sequence-name="MY_SEQ"/> 
        </hj:id> 
       </xs:appinfo> 
      </xs:annotation> 
     </xs:element> 
     <!-- ... --> 
    </xs:sequence> 
</xs:complexType> 

ИЛИ

<xs:element name="id" type="xs:int" minOccurs="0"> 
    <xs:annotation> 
     <xs:appinfo> 
      <hj:id/> 
     </xs:appinfo> 
    </xs:annotation> 
</xs:element> 
+0

Спасибо, но я уже пробовал те, и это не сработало. Я только что видел, что код XML, который я поставил в вопросе, не появляется. Я постараюсь это исправить. Чтобы быть ясным, я пытаюсь использовать поле id в * суперклассе * и не пытаюсь сделать одно из полей в сгенерированных классах id. Я установил файл bindings.xjb, чтобы сделать все сгенерированные классы дочерними элементами DataObject, который имеет поле ID. –