Domanda

La mia configurazione corrente utilizzando Hibernate utilizza il file hibernate.reveng.xml per generare i vari file hbm.xml. Che vengono poi trasformati in POJO utilizzando hbm2java. Abbiamo trascorso qualche tempo, mentre la progettazione del nostro schema, di inserire alcune descrizioni abbastanza decente sui tavoli e lì le colonne. Sono in grado di tirare queste descrizioni nei file hbm.xml durante la generazione di loro utilizzando hbm2jhbmxml.

Così ho qualcosa di simile a questo:

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

Allora, come faccio dico hbm2java per tirare e inserire questi commenti nei file Java creati?

Ho letto su questo sulla modifica dei modelli FreeMarker per modificare il codice modo in cui viene generato. Io sto sotto il concetto, ma non era a dettagliate su cos'altro si potrebbe fare con esso al di là c'è esempio di condizioni pre e post.

È stato utile?

Soluzione

Il solito modo per aggiungere javadoc in POJO generato è quello di utilizzare i tag meta, come in questo esempio:

<!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> 

Quindi, per ottenere qualcosa di simile, ma compresi i commenti di tabelle e colonne, la mia comprensione della Javadoc Commenti in discussione POJO è che dovreste modificare i modelli utilizzati per generare i file HBM.

Per fare ciò, guardare ai modelli FreeMarker di hibernate-tools.jar , hbm/persistentclass.hbm.ftl, hbm/property.hbm.ftl, ecc (questo non è un elenco esaustivo) e modificarli.

Per esempio, in hbm/persistentclass.hbm.ftl, invece che:

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

Credo che si possa fare:

<#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>

E così via.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top