2010-12-01 28 views
0

J'ai récemment installé Eclipse Helios et Hibernate Tools 3.4.0.Beta1.Hibernate Tools: comment générer des classes de base?

J'ai essayé de générer une "classe de base" à partir de fichiers de mappage, mais je ne trouve pas comment faire. Disons que j'ai un fichier de mapping appelé Individual.hbm.xml. Je veux que Hibernate Tools génère 2 POJOs: - un BaseIndividual.java qui contiendrait des constructeurs et des getters/setters - un Individual.java où je pourrais ajouter du code "custom" qui ne serait pas enlevé quand je re-générerais des POJOs

J'ai passé beaucoup de temps à chercher des informations mais je n'ai jamais trouvé de réponse pratique. Si quelqu'un peut aider ... merci d'avance

Répondre

0

Je cherche un moyen de le faire aussi. Ce que je fais en ce moment, est de:

  • pour sauver ma classe personnalisée « Individual.java » à un autre package sans mettre à jour la référence.
  • générer tout mon POJO (avec le nom de la table, soit individuel)
  • les renommer tablename + "Base" (ie IndividualBase) sans mettre à jour les références)
  • déplacer alors ma classe personnalisée (individuelle) qui prolonge la pojo de l'autre paquet.

Avez-vous trouvé un moyen automatique de le faire par exemple:

  • L'utilisation d'un modèle personnalisé
  • vous écrire propre tâche fourmi
  • Configurer hibernate.reveng.xml

Je suis d'accord qu'Hibernate Synchronizer le faisait plutôt bien!

1

Je viens de rencontrer votre question en essayant de faire la même chose moi-même (je pense).

Ce que je l'ai fait est fixé comme suit dans mon hbm.xml fichier de configuration:

<class 
    name="User" 
    table="USERS"> 
    <meta attribute="generated-class">ocs.authentication.UserBase</meta> 
    <id 
     name="user_id" 
     column="USER_ID" 
     type="integer"> 
     <generator class="increment"/> 
    </id> 
    <property 
     name="username" 
     column="USERNAME" 
     type="string" /> 
</class> 

Notez la section <meta attribute="generated-class">. Cela entraînera l'appel de la classe générée UserBase (dans ce cas). Vous pouvez alors créer une autre classe (appelée User par exemple) qui étendra cette classe de base:

public class User extends UserBase { 

    public User() { 
    } 

    public void SomeFunction() { 
    ... 
    } 

} 

Cela semble fonctionner pour moi. J'espère que c'est utile pour vous, ou pour les autres qui veulent faire une chose similaire.