我使用hibernate的当前设置使用hibernate.reveng.xml
文件生成各种hbm.xml
文件。然后使用hbm2java
将其转换为POJO。我们在设计模式时花了一些时间,在表和列上放置了一些相当不错的描述。我可以使用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
那么如何告诉{{1}}将这些注释放入创建的Java文件中?
我已阅读this有关编辑freemarker模板以更改代码生成方式的信息。我坚持这个概念,但除了前后条件的例子之外,没有详细说明你还能做些什么呢。
答案 0 :(得分:3)
在生成的POJO中添加javadoc的常用方法是使用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文件的模板。
为此,请查看 hibernate-tools.jar ,hbm/persistentclass.hbm.ftl
,hbm/property.hbm.ftl
等的freemarker模板(这不是详尽的列表)并修改它们。
例如,在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>
等等。