Изменить имя POJO при генерации из спящего режима - PullRequest
3 голосов
/ 10 марта 2011

Я хотел бы знать, как я могу изменить имя моего POJO при генерации с помощью hibernate.

Мои таблицы имеют соглашение об именах: FR_ и TRN_. При создании POJO я хотел бы удалить FR и TRN и добавить VO к имени.

Например,

Имя таблицы : FR_ACCOUNT_MST

POJO будет создан : accountMstVO

Спасибо, Варуна

Ответы [ 3 ]

8 голосов
/ 23 августа 2011

Правильно, вам нужно расширить класс 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";
        }
}
5 голосов
/ 24 августа 2011

Или вы можете сделать это, добавив в 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>
1 голос
/ 10 марта 2011

Я предполагаю, что вы используете возможность Hibernate Tool для обратного инжиниринга классов модели домена из метаданных базы данных.В этом случае вы можете реализовать пользовательский org.hibernate.cfg.reveng.ReverseEngineeringStrategy, как объяснено здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...