Как генерировать комментарии в hbm2java создан POJO?
Моя текущая настройка с использованием 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?
Я прочитал об этом о редактировании шаблонов freemarker, чтобы изменить способ генерации кода. Я понимаю концепцию, но она не была детальной о том, что еще вы могли бы сделать с ней, за исключением примера предварительных и последующих условий.
1 ответ
Обычный способ добавить 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 в POJOs заключается в том, что вам придется изменить шаблоны, используемые для создания файлов hbm.
Для этого посмотрите шаблоны freemarker в 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>
И так далее.