2010-03-29 8 views
4

Ma configuration actuelle utilisant Hibernate utilise le fichier hibernate.reveng.xml pour générer les différents fichiers hbm.xml. Qui sont ensuite transformés en POJO en utilisant hbm2java. Nous avons passé du temps à concevoir notre schéma, à placer des descriptions assez décentes sur les tables et les colonnes. Je suis capable de tirer ces descriptions dans les fichiers hbm.xml lors de leur génération en utilisant hbm2jhbmxml.Comment générer des commentaires dans hbm2java créé POJO?

donc je reçois quelque chose de similaire à ceci:

<class name="test.Person" table="PERSONS"> 
    <comment>The comment about the PERSONS table.</comment> 
    <property name="firstName" type="string"> 
     <column name="FIRST_NAME" length="100" not-null="true"> 
      <comment>The first name of this person.</comment> 
     </column> 
    </property> 
    <property name="middleInitial" type="string"> 
     <column name="MIDDLE_INITIAL" length="1"> 
      <comment>The middle initial of this person.</comment> 
     </column> 
    </property> 
    <property name="lastName" type="string"> 
     <column name="LAST_NAME" length="100"> 
      <comment>The last name of this person.</comment> 
     </column> 
    </property> 
</class> 

Alors, comment puis-je dire hbm2java pour tirer et placer ces commentaires dans les fichiers créés Java?

J'ai lu this sur la modification des modèles de freemarker pour changer la manière dont le code est généré. Je sous-entends le concept, mais ce n'était pas détaillé sur ce que vous pourriez faire d'autre au-delà de cet exemple de conditions préalables et postérieures.

Répondre

3

La manière habituelle d'ajouter javadoc dans POJO générés est d'utiliser meta balises, comme dans cet exemple:

<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 2.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> 

<class name="Person"> 
    <meta attribute="class-description"> 
    Javadoc for the Person class 
    @author Frodo 
    </meta> 

    <id name="id" type="long"> 
    <meta attribute="scope-set">protected</meta> 
    <generator class="increment"/> 
    </id> 
    <property name="name" type="string"> 
    <meta attribute="field-description">The name of the person</meta> 
    </property> 
</class> 

Donc, pour obtenir quelque chose de similaire, mais y compris les commentaires de vos tables et colonnes, ma compréhension le thread Javadoc Comments in POJOs est que vous devez modifier les modèles utilisés pour générer des fichiers hbm.

Pour ce faire, regardez les modèles Freemarker de mise en veille prolongée -tools.jar, hbm/persistentclass.hbm.ftl, hbm/property.hbm.ftl, etc (ce n'est pas une liste exhaustive) et les modifier.

Par exemple, dans hbm/persistentclass.hbm.ftl, au lieu de:

<#if clazz.table.comment?exists && clazz.table.comment?trim?length!=0> 
<comment>${clazz.table.comment}</comment> 
</#if> 

Je suppose que vous pourriez faire:

<#if clazz.table.comment?exists && clazz.table.comment?trim?length!=0> 
<meta attribute="class-description"> 
    ${clazz.table.comment} 
</meta> 
<comment>${clazz.table.comment}</comment> 
</#if> 

Et ainsi de suite.

+0

@Pascal Cela ressemble à ce que je cherche. Je reviendrai et je l'accepterai une fois que je pourrai l'essayer. Merci pour l'aide. –

Questions connexes