如何使用 Hibernate Tools 生成带有 toString、equals 和 hashcode 的 POJO?

发布于 2024-10-16 07:56:17 字数 1791 浏览 3 评论 0原文

用于 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()> 

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

先感谢您

Hibernate Tools plugin (version 3.2.4) for eclipse

Hi all,
I'm using the plugin to reverse engineer my POJOs and DAOs from my DB-Schema and for some reason the toString,equals and hashcode methods aren't created in the POJOs.
What I'm doing is the following:
Create a new JPA project.
Configure it's persistence.xml file as follows:

<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"/>

Created a hibernate.reveng.xml file to only select my dbo scehma in my catalog.
Then created a Hibernate Console Configuration with type as JPA and the connection to be taken from the JPA config, and lastly configured the Persistence unit.
Used the Hibernate Code Generation configurations to create a new config where I enabled the "Reverse engineer from JDBC Connection" defined the output directory, package and reveng file.
In addition I checked all the checkboxes in that tab (apart from use custom templates).
In the exporters tab I used:
1. Use Java 5 syntax.
2. Generate EJB3 annotations.
and used the "Domain code" and "DAO code" exporters.
This works fine (after solving some problems with the DTP plugin compatibality).
The main problem is that I see in the Pojo.ftl the following expressions:

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

and in the PojoToString.ftl I see:

<#if pojo.needsToString()> 

Where can I set this property? I want all my pojos to need toString,equals and hashcode?

Thank you in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

空城之時有危險 2024-10-23 07:56:17

这假设默认的 Hibernate Tools/JBoss Tools

您可以使用要调用 toString() 或 equals() 的每一列来定义它。将其作为 提供财产

<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>

This assumes the default Hibernate Tools/JBoss Tools

You define it with each column you want to have a toString() or equals() call. Provide it as a meta property

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文