2011-03-10 1 views
3

Je voudrais savoir comment je peux changer le nom de mon POJO lors de la génération en mode hibernation.Modifier le nom POJO lors de la génération à partir d'hibernate

Mes tables ont une convention de nommage de: FR_ et TRN_. Lors de la génération des POJO, je voudrais supprimer les FR et TRN et ajouter VO au nom.

Par exemple,

Nom de la table: FR_ACCOUNT_MST

POJO à générer: accountMstVO

Merci, Varun

Répondre

8

droit, vous devez étendre le DelegatingReverseEngineeringStrategy classe (mise en veille prolongée-tool.jar lib) et passer outre méthode tableToClassName.

Le code ci-dessous renommera FR_ACCOUNT_MST en FR_ACCOUNT_MSTVO.

Je vous laisse utiliser de la regex pour obtenir le résultat voulu.

La className variable contient le paquet + nom de classe (c.-à-com.mycompany.project.hibernate.FR_ACCOUNT_MST.)

Source: 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

Merde .. ce fut la seule question que je ne l'avais pas marqué comme nswered .. Merci pour la solution .. même si j'en avais besoin il y a quelques mois .. :) et bienvenue au SOF! –

1

Je suppose que vous utilisez Hibernate outil de possibilité de désosser les classes du modèle de domaine à partir des métadonnées de la base de données. Dans ce cas, vous pouvez implémenter un org.hibernate.cfg.reveng.ReverseEngineeringStrategy personnalisé comme expliqué here.

5

Ou vous pouvez le faire en ajoutant dans le hibernate.reveng.xml fichier le nom de chaque 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> 
Questions connexes