2010-03-29 1 views
4

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

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

<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 файлов?

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

ответ

3

Обычный способ добавить Javadoc в сгенерированных POJOs является использование 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 in POJOs заключается в том, что вам придется изменить шаблоны, используемые для генерации файлов hbm.

Чтобы сделать это, посмотрите на Freemarker шаблоны спящем-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> 

И так далее.

+0

@Pascal Это похоже на то, что я ищу. Я вернусь и приму это, как только смогу попробовать. Спасибо за помощь. –