3

我想知道如何在使用休眠生成 POJO 时更改它的名称。

我的表有一个命名约定:FR_ 和 TRN_。在生成 POJO 时,我希望删除 FR 和 TRN 并将 VO 附加到名称中。

例如,

表名:FR_ACCOUNT_MST

要生成的 POJO:accountMstVO

谢谢,瓦伦

4

3 回答 3

8

对,您必须扩展DelegatingReverseEngineeringStrategy类(hibernate-tool.jar 库)并覆盖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";
        }
}
于 2011-08-23T16:56:07.683 回答
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>
于 2011-08-24T10:07:00.413 回答
1

我假设您正在使用 Hibernate Tool 从数据库元数据逆向工程领域模型类的能力。在这种情况下,您可能希望按照此处org.hibernate.cfg.reveng.ReverseEngineeringStrategy的说明实现自定义。

于 2011-03-10T06:20:16.310 回答