2017-03-06 6 views
0

私はmaven-hyperjaxb3-plugin(0.6.1)を使用して、私のxsdファイルからドメインクラスを生成しています。 1つのクラスを除いてすべてがうまく動作し、23個以上のフィールドを追加するまではうまく動作します。Hyperjaxb3でRestItemクラスが生成されるのはなぜですか?

これ以上の数のフィールドを超えると、ILTという名前のテーブルの2つのクラスが生成されます.1つはILT.java、もう1つはILTRestItem.javaと呼ばれ、これらはREST APIでこれらのクラスを使用することです(私は何かするつもりはない)。

ILTRestItemクラスにコンパイルエラーがあります。クラス、のQName(タイプXmlAdapterUtilsのメソッドmarshallJAXBElement(クラス、QNameに、クラス、 BoundType)は 引数には適用されません

:それはXmlAdapterUtils.unmarshallJAXBElementと、エラーメッセージへの呼び出しの多くがされてい、Class、String)

実際には、ILTRestItemクラスをまったく作成しなかったので、実際にはそのエラーについてあまり心配していません。他の(より小さい)クラスはうまく動作し、私の目標はILTが同じことをすることです。

jaxb2プラグイン(maven-jaxb2-plugin)を実行し、それを使ってクラスを生成すると、ILTRestItemは生成されず、クラスは正しいものですが、もちろんJPAアノテーションがありません。これは、Hyperjaxb3がILTRestItemクラスの生成を担当しているのではないかと考えていますが、私は、クラスにRestItemのようなものがあることを期待してソースコードを調べました。

ここでは、単一のテーブル継承を使用しています。 ILTクラスと別のクラス(IFT)は同じ基本テーブル(Transaction)を使用し、両方ともTransactionクラスを拡張します。 ILTをTransactionから切り離して継承されないクラスにすると、ILTRestItemは生成されなくなります。

JAXB2とHyperJaxb3の両方の検索がたくさんあり、RestItemへの参照がないか、または生成された理由(またはそのいずれか)が見つかりません。私の希望は、RestItemの生成を無効にするための設定スイッチがいくつかありますが、これまで見ることができません。

完全性のために、私はそれらのうちの1つがこの動作のトリガーであったかどうかを調べるために異なるフィールドを切り替えてみてください。それは実際にはフィールドの数、またはおそらくレコードの全長のようです。

はまた:JPA 2.1および関連するMavenの断片である:

<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からそのフィールドを削除すると、問題はなくなりました。私はそれが特定の分野の原因であったことをどのように逃したのか分からないので、私は最新のバージョンにアップグレードする前にその結論に至ったかもしれないと思う。

関連する問題