2017-03-06 34 views
0

我正在使用maven-hyperjaxb3-plugin(0.6.1)从我的xsd文件生成域类。除了一个类以外,一切都很好,甚至可以正常工作,直到我添加了超过23个字段。为什么Hyperjaxb3生成RestItem类?

一旦我超过了这个数量的字段,它会为我的表命名为ILT生成两个类:一个称为ILT.java,另一个称为ILTRestItem.java,我假设这与使用这些类与REST API有关(我不打算这么做)。

的ILTRestItem类有编译错误。它做了很多呼叫XmlAdapterUtils.unmarshallJAXBElement和错误消息的是:

方法marshallJAXBElement(类,的QName,类, BoundType)在类型XmlAdapterUtils是不适用于 参数(类,的QName ,类,字符串)

我实际上并不太担心这个错误,因为我宁愿它根本没有创建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中删除该字段时,问题消失了。我不确定我是如何错过它是由某个特定领域造成的,我想我可能在升级到最新版本之前得出这个结论。

相关问题