免責聲明:我是Hyperjaxb3的作者。
實體名稱不是可自定義的,但您可以實現自己的命名策略來生成完全限定的實體名稱。
爲此,您必須阻止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,並通過插件的依賴在Maven POM添加到類路徑HJ3,例如:
<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>
這裏有一個它實現/測試項目配置自定義命名stratgy:
參見:
請參考[here](http:// stac對於類似的問題,koverflow.com/questions/2572576/hyperjaxb-entity/3184360#comment55884010_3184360)! –