如何让Hibernate Tools用toString,equals和hashcode生成POJO?

时间:2011-02-09 12:58:47

标签: java jpa code-generation reverse-engineering hibernate-tools

用于eclipse的Hibernate Tools插件(版本3.2.4)

大家好,
我正在使用插件从我的DB-Schema中反向设计我的POJO和DAO,并且由于某种原因,在POJO中没有创建toString,equals和hashcode方法。
我正在做的是以下内容: 创建一个新的JPA项目 配置它的persistence.xml文件,如下所示:

<persistence-unit name="PU">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.connection.driver_class" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="hibernate.connection.password" value="pass"/>
<property name="hibernate.connection.url" value="jdbc:sqlserver://****:1433;DatabaseName=myDB"/>
<property name="hibernate.connection.username" value="user"/>
<property name="hibernate.default_catalog" value="myDB"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
<property name="hibernate.connection.schema" value="dbo"/>

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="false"/>

创建了一个hibernate.reveng.xml文件,只在我的目录中选择我的dbo scehma 然后创建了一个类型为JPA的Hibernate控制台配置,以及从JPA配置中获取的连接,最后配置了持久性单元。
使用Hibernate代码生成配置创建一个新配置,我在其中启用了“从JDBC连接反向工程”,定义了输出目录,包和reveng文件。
此外,我检查了该选项卡中的所有复选框(除了使用自定义模板) 在我使用的出口商标签中:
1.使用Java 5语法 2.生成EJB3注释 并使用“域代码”和“DAO代码”出口商 这很好(在解决了DTP插件兼容性的一些问题之后) 主要问题是我在Pojo.ftl中看到以下表达式:

<#include "PojoToString.ftl"/>
<#include "PojoEqualsHashcode.ftl"/>

在PojoToString.ftl中,我看到了:

<#if pojo.needsToString()> 

我在哪里可以设置此属性?我希望我的所有pojos都需要toString,equals和hashcode?

提前谢谢

1 个答案:

答案 0 :(得分:2)

这假设是默认的Hibernate Tools / JBoss Tools

您可以使用要进行toString()或equals()调用的每一列来定义它。将其作为meta属性提供

<table schema="public" name="someName" class="com.stackovervlow">
        <primary-key>

        </primary-key>
        <column name="xx" property="id" type="long">
            <meta attribute="use-in-tostring">true</meta>
            <meta attribute="scope-set">private</meta>
        </column>
        <column name="yy">
            <meta attribute="use-in-tostring">true</meta>
            <meta attribute="use-in-equals">true</meta>
        </column>   
    </table>