Как генерировать комментарии в hbm2java создан POJO? - PullRequest
4 голосов
/ 29 марта 2010

Моя текущая настройка с использованием hibernate использует файл hibernate.reveng.xml для генерации различных файлов hbm.xml. Которые затем превращаются в POJO, используя hbm2java. Мы потратили некоторое время на разработку нашей схемы, чтобы разместить несколько довольно приличных описаний в таблицах и там столбцах. Я могу вытащить эти описания в файлы hbm.xml при генерации с использованием hbm2jhbmxml.

Итак, я получаю нечто похожее на это:

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

Так, как мне сказать hbm2java, чтобы вытащить и поместить эти комментарии в созданные файлы Java?

Я прочитал эту о редактировании шаблонов свободных маркеров для изменения способа генерации кода. Я понимаю концепцию, но она не была детальной о том, что еще вы могли бы сделать с ней, за исключением примера условий до и после.

1 Ответ

3 голосов
/ 01 апреля 2010

Обычный способ добавить Javadoc в сгенерированные POJO - это использовать meta теги, как в следующем примере:

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

Итак, чтобы получить что-то похожее, но с комментариями к вашим таблицам и столбцам, мое понимание потока Javadoc Comments в POJOs заключается в том, что вам придется изменять шаблоны, используемые для создания файлов hbm.

Для этого посмотрите шаблоны свободных маркеров hibernate-tools.jar , hbm/persistentclass.hbm.ftl, hbm/property.hbm.ftl и т. Д. (Это не полный список) и измените их.

Например, в hbm/persistentclass.hbm.ftl вместо:

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

Я думаю, что вы могли бы сделать:

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

и т. Д.

...