设置hyperjaxb映射以强制实现外部接口

时间:2015-10-08 19:10:42

标签: java maven jpa jaxb hyperjaxb

我有一个hyperjaxb xsd文件和绑定配置。如何强制生成的类实现在另一个工件中声明的自定义接口?我知道我可以使用

让他们扩展另一个类
    <xjc:superClass name="com.sample.jpa.entities.BaseEntity"/>

但我还需要它们来实现另一个接口。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

免责声明:此处HyperjaxbJAXB2-Basics的作者。

您可以使用Inheritance plugin中的JAXB2-BasicsHyperjaxb。您既可以扩展类,也可以实现接口。该插件还可以处理泛型,因此您甚至可以执行<inheritance:implements>com.acme.foo.MyInterface&lt;com.acme.foo.SomeClass&gt;</inheritance:implements>等内容。

简短指南:

  • 通过<arg>-Xinheritance</arg>中的pom.xml启用该插件。类似的东西:

        <plugin>
            <groupId>org.jvnet.hyperjaxb3</groupId>
            <artifactId>maven-hyperjaxb3-plugin</artifactId>
            <configuration>
                <!--result>mappingFiles</result-->
                <roundtripTestClassName>org.jvnet.hyperjaxb3.ejb.tests.cuone.RoundtripTest</roundtripTestClassName>
                <args>
                    <arg>-Xinheritance</arg>
                </args>
            </configuration>
        </plugin>  
    

    JAXB2-Basics是Hyperjaxb的依赖项,所以你很可能不需要在这里做任何其他事情。请参阅example(对于注释插件,但这无关紧要)。

  • 使用inheritance:extendsinheritance:implements自定义元素自定义复杂类型。例如:

    <jaxb:bindings schemaLocation="schema.xsd" node="/xsd:schema">
        <jaxb:bindings node="xsd:complexType[@name='WillBeMadeCloneableType']">
            <inheritance:implements>java.lang.Cloneable</inheritance:implements>
        </jaxb:bindings>
    </jaxb:bindings>
    

应该是它。