从hibernate生成时更改POJO名称

时间:2011-03-10 04:53:53

标签: hibernate naming-conventions hibernate-mapping pojo

我想知道如何在使用hibernate生成POJO时更改其名称。

我的表的命名约定为:FR_和TRN_。 在生成POJO时,我想删除FR和TRN并将VO附加到名称上。

例如,

表格名称:FR_ACCOUNT_MST

要生成的POJO :accountMstVO

谢谢, VARUN

3 个答案:

答案 0 :(得分:8)

是的,你必须扩展 DelegatingReverseEngineeringStrategy 类(hibernate-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";
        }
}

答案 1 :(得分: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>

答案 2 :(得分:1)

我假设你正在使用Hibernate Tool从数据库元数据中反向设计域模型类的能力。在这种情况下,您可能希望按照here所述实现自定义org.hibernate.cfg.reveng.ReverseEngineeringStrategy