Hibernate 在hyperjaxb3生成的java类中使用完全限定名

Hibernate 在hyperjaxb3生成的java类中使用完全限定名,hibernate,jpa,jaxb,hyperjaxb,Hibernate,Jpa,Jaxb,Hyperjaxb,我已经从hyperjax3生成了.java类,这些类已经用@Entity和@Table等注释进行了注释 在@Entity中,自动添加类名,如下所示: @Entity(name=“MyClassName”) 但是我希望这个名称字段有一个完全限定的类名作为 @Entity(name=“myPackage.here.MyClassName”) 我正在使用 例子 并通过运行mvn clean install生成带注释的java类,其中我的XSDs模式位于maven项目的src\main\resource

我已经从hyperjax3生成了.java类,这些类已经用@Entity和@Table等注释进行了注释

在@Entity中,自动添加类名,如下所示:
@Entity(name=“MyClassName”)
但是我希望这个名称字段有一个完全限定的类名作为
@Entity(name=“myPackage.here.MyClassName”)
我正在使用 例子 并通过运行mvn clean install生成带注释的java类,其中我的XSDs模式位于maven项目的
src\main\resources
文件夹中


*我已经搜索并找到了一种方法,表明使用auto import=false,但我无法将其合并,因为我只是在运行那个maven项目。

免责声明:我是

实体名称不可自定义,但您可以实施自己的命名策略来生成完全限定的实体名称

为此,您必须输入
org.jvnet.hyperjaxb3.ejb.strategy.naming.naming
接口。最简单的方法是将
org.jvnet.hyperjaxb3.ejb.strategy.naming.impl.DefaultNaming
子类化,并覆盖
getEntityName
方法:

public String getEntityName(Mapping context, Outline outline, NType type) {
    final JType theType = type.toType(outline, Aspect.EXPOSED);
    assert theType instanceof JClass;
    final JClass theClass = (JClass) theType;
    return CodeModelUtils.getPackagedClassName(theClass);
}
您还必须包含
org\jvnet\hyperjaxb3\ejb\plugin\custom\applicationContext.xml
资源来配置自定义命名策略:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean name="naming" class="com.acme.foo.CustomNaming">
        <property name="reservedNames" ref="reservedNames"/>
    </bean>

</beans>

最后,将其全部编译、打包为JAR并添加到HJ3类路径,例如通过Maven POM中的插件依赖项:

        <plugin>
            <groupId>org.jvnet.hyperjaxb3</groupId>
            <artifactId>maven-hyperjaxb3-plugin</artifactId>
            <configuration>...</configuration>
            <dependencies>
                <dependency>
                    <groupId>com.acme.foo</groupId>
                    <artifactId>hyperjaxb3-custom-naming-extension</artifactId>
                    <version>...</version>
                </dependency>
            </dependencies>
        </plugin>

org.jvnet.hyperjaxb3


另见:

  • (目前服务器似乎已关闭)
请参考类似问题!