私は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>
...
これがある限り、私のフィールドリストが十分に短いよう、すべての作業を行います。