2015-12-03 72 views
1

我已經從已經與像@Entity和註釋@Table等批註的hyperjax3生成的.java類的Java類。」使用完全合格的名稱產生

在@Entity類名 @Entity(name = "MyClassName") 但我想這個名字領域爲
@Entity(name = "myPackage.here.MyClassName") 我使用的是 hyperjaxb3-ejb-samples-po-initial-0.5.6例如 和產生的註釋有完全合格的類名:如下自動添加java類運行mvn clean install其中我的XSDs模式存在於maven項目的src\main\resources文件夾中。 *我已經搜索並找到一種方式,指出使用自動導入= false,但我不能將這個,因爲我只是運行該maven項目。

+0

請參考[here](http:// stac對於類似的問題,koverflow.com/questions/2572576/hyperjaxb-entity/3184360#comment55884010_3184360)! –

回答

1

免責聲明:我是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:

參見:

相關問題