2011-03-10 40 views
3

我想知道如何在使用休眠生成POJO時更改POJO的名稱。更改POJO名稱,同時從休眠中生成

我的表有一個命名約定:FR_和TRN_。 在生成POJO時,我想要刪除FR和TRN並將VO添加到名稱中。

例如,

表名:FR_ACCOUNT_MST

POJO中產生:accountMstVO

感謝, Varun的

回答

8

的權利,你必須擴展DelegatingReverseEngineeringStrategy類(休眠-tool.jar LIB)和覆蓋tableToClassName方法。

下面的代碼會將FR_ACCOUNT_MST重命名爲FR_ACCOUNT_MSTVO。

我讓你用一些正則表達式來得到想要的結果。

變量的className包含包+類名(即com.mycompany.project.hibernate.FR_ACCOUNT_MST)

來源:http://www.cereslogic.com/pages/2008/08/05/hibernate-tools-tips-for-reverse/

package com.altenor.coffre.generated; 

import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy; 
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy; 
import org.hibernate.cfg.reveng.TableIdentifier; 

public class CoffreReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy { 

    public CoffreReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) { 
     super(delegate); 
    } 

    //add Base before class name 
    public String tableToClassName(TableIdentifier tableIdentifier) { 
      String className = super.tableToClassName(tableIdentifier); 
      return className+"VO"; 
     } 
} 
+0

該死的..這只是我沒有標記爲問題已回答..感謝您的解決方案..即使我幾個月前需要它.. :) ..並歡迎SOF! – 2011-08-23 17:06:52

1

我假設你正在使用Hibernate工具的能夠從數據庫元數據反向工程領域模型類。在這種情況下,您可能需要按照here的說明執行自定義org.hibernate.cfg.reveng.ReverseEngineeringStrategy

5

或者您也可以通過在加入做hibernate.reveng.xml中文件中的每個POJO的名稱:

<hibernate-reverse-engineering> 
    <table-filter match-schema="CO" match-name="FR_ACCOUNT_MST"/> 

    <table name="FR_ACCOUNT_MST" schema="CO" class="com.bonables.co.hibernate.pojo.accountMstVO" /> 

</hibernate-reverse-engineering>