3

hibernateを使用してPOJOを生成するときに、POJOの名前を変更する方法を知りたいのですが。

私のテーブルには、FR_とTRN_の命名規則があります。POJOを生成しているときに、FRとTRNを削除し、名前にVOを追加したいと思います。

例えば、

テーブル名:FR_ACCOUNT_MST

生成されるPOJO:accountMstVO

ありがとう、ヴァルン

4

3 に答える 3

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";
        }
}
于 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

データベースメタデータからドメインモデルクラスをリバースエンジニアリングするHibernateToolの機能を使用していると想定しています。その場合、ここでorg.hibernate.cfg.reveng.ReverseEngineeringStrategy説明するようにカスタムを実装することをお勧めします。

于 2011-03-10T06:20:16.310 に答える