2017-03-06 1 views
0

내 xsd 파일에서 도메인 클래스를 생성하기 위해 maven-hyperjaxb3-plugin (0.6.1)을 사용하고 있습니다. 하나의 클래스를 제외하고는 모두 잘 작동하며 23 개 이상의 필드를 추가하기 전까지는 잘 작동합니다.Hyperjaxb3이 RestItem 클래스를 생성하는 이유는 무엇입니까?

필자가 필드 수를 초과하면 ILT라는 내 테이블에 대해 두 개의 클래스를 생성합니다. 하나는 ILT.java이고 다른 하나는 ILTRestItem.java라고하며,이 클래스는 REST API와 함께 사용하는 것으로 간주됩니다 (내가 할 계획이없는 것).

ILTRestItem 클래스에 컴파일 오류가 있습니다. 그것은 XmlAdapterUtils.unmarshallJAXBElement 및 오류 메시지에 대한 호출의 많은입니다 수행합니다 유형 XmlAdapterUtils에서

메소드 marshallJAXBElement (클래스,의 QName, 클래스, BoundType)는 인수 (클래스,의 QName 적용되지 않습니다 , Class, String)

실제로 나는 ILTRestItem 클래스를 전혀 만들지 않았기 때문에 그 오류에 대해 너무 걱정하지 않습니다. 다른 (더 작은) 클래스는 잘 작동하며 ILT가 동일한 목표를 수행하는 것이 목표입니다.

jaxb2 플러그인 (maven-jaxb2-plugin)을 실행하여 클래스를 생성 할 때 ILTRestItem이 생성되지 않고 클래스가 올바른 경우에도 JPA 주석이 누락됩니다. 그래서 Hyperjaxb3가 ILTRestItem 클래스 생성에 대한 책임이 있다고 생각되지만, 'RestItem'과 같은 클래스를보고 싶어하는 소스 코드를 살펴 보았습니다.

하나의 관련 요점은 여기서 하나의 테이블 상속을 사용한다는 것입니다. ILT 클래스와 다른 클래스 (IFT)는 동일한 기본 테이블 (Transaction)을 사용하며 둘 다 Transaction 클래스를 확장합니다. 트랜잭션에서 ILT를 분리하고 상속받지 않은 클래스로 만들면 ILTRestItem이 더 이상 생성되지 않습니다.

JAXB2와 HyperJaxb3 모두 검색이 많으며 RestItem에 대한 참조가 없거나 생성 된 이유 (또는 그 중 어떤 것)가 없습니다. 저의 희망은 RestItem 생성을 끄기위한 설정 스위치가 있지만 지금까지 볼 수 없습니다.

완성을 위해 다른 필드를 전환하여이 중 하나가이 동작에 대한 트리거 였는지 아닌지 확인해야했습니다. 정말 필드의 수 또는 아마도 레코드의 전체 길이 인 것 같습니다.

또한 : JPA 2.1 관련 받는다는 조각은 다음과 같습니다

<plugin> 
     <groupId>org.jvnet.hyperjaxb3</groupId> 
     <artifactId>maven-hyperjaxb3-plugin</artifactId> 
     <version>0.6.1</version> 
     <dependencies> 
      <dependency> 
       <groupId>com.xyz</groupId> 
       <artifactId>ims-core-partner</artifactId> 
       <version>${project.version}</version> 
      </dependency> 
     </dependencies> 
     <executions> 
      <execution> 
       <goals> 
        <goal>generate</goal> 
       </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <variant>jpa2</variant> 
      <extension>true</extension> 
        <args> 
         <arg>-extension</arg> 
         <arg>-XtoString</arg> 
         <arg>-Xannotate</arg> 
        </args> 
     </configuration> 
    </plugin> 

종속성은 첨부하여 annox에서 사용자 지정 주석의 몇 가지를 얻을 수 있습니다.

마지막으로 여기 내 XSD 파일에서 관련 조각입니다 :

<complexType name="ILT"> 
    <xsd:annotation> 
     <xsd:appinfo> 
      <hj:entity> 
      <orm:inheritance strategy="SINGLE_TABLE"/> 
      <orm:discriminator-value>ILT</orm:discriminator-value> 
      </hj:entity> 
     </xsd:appinfo> 
    </xsd:annotation> 
    <xsd:complexContent> 
    <xsd:extension base="tns:Transaction"> 
     <xsd:sequence> 
     <element name="iltType" type="tns:ItemType"> 
     </element> 
     <element name="investmentOrderId" type="string"> 
     </element> 
... 

이만큼 내 필드 목록이 충분히 짧은으로 모든 작업을 수행합니다.

답변

0

웃기는 방법 일단 여기에 질문을 입력하면 다음 30 분 내에 답변이 나타납니다. 어쨌든 일종의. 내가 가진 문제는 ILT 클래스 (ILTRestItem을 생성하는 클래스)와 Transaction 클래스 (그것이 상속받은 클래스)에서 같은 필드를 정의함으로써 발생했습니다. 합리적으로 그것은 그것을 분리 된 테이블로 분리하고 조인하려고했습니다. ILT에서 해당 필드를 제거하면 문제가 사라졌습니다.나는 그것이 특정 분야의 원인이라고보고 싶었는지 모르겠다. 나는 최신 버전으로 업그레이드하기 전에 내가 그 결론에 도달했다고 생각한다.

관련 문제