5

我当前使用休眠的设置使用该hibernate.reveng.xml文件来生成各种hbm.xml文件。然后使用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 模板以更改代码生成方式的信息。我理解这个概念,但除了前置条件和后置条件的例子之外,它并没有详细说明你还能用它做什么。

4

1 回答 1

4

在生成的 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> 

因此,要获得类似但包括表和列的注释的内容,我对POJO 线程中的 Javadoc 注释的理解是,您必须修改用于生成 hbm 文件的模板。

为此,请查看hibernate-tools.jarhbm/persistentclass.hbm.ftlhbm/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>

等等。

于 2010-04-01T13:33:28.873 回答