从 hibernate 生成时更改 POJO 名称

发布于 2024-10-21 11:22:01 字数 232 浏览 3 评论 0原文

我想知道如何在使用 hibernate 生成 POJO 时更改它的名称。

我的表的命名约定为:FR_ 和 TRN_。 在生成 POJO 时,我希望删除 FR 和 TRN 并将 VO 附加到名称中。

例如,

表名:FR_ACCOUNT_MST

要生成的POJO:accountMstVO

谢谢, 瓦伦

I'd like to know how i can change the name of my POJO when generating it using hibernate.

My tables have a naming convention of : FR_ and TRN_.
While generating the POJOs I'd like the remove the FR and TRN and append VO to the name.

For example,

Table name: FR_ACCOUNT_MST

POJO to be generated: accountMstVO

Thanks,
Varun

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

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

发布评论

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

评论(3

少女的英雄梦 2024-10-28 11:22:01

是的,您必须扩展 DelegatingReverseEngineeringStrategy 类(hibernate-tool.jar lib)并重写 tableToClassName 方法。

下面的代码会将 FR_ACCOUNT_MST 重命名为 FR_ACCOUNT_MSTVO。

我让你使用一些正则表达式来获得想要的结果。

变量className包含包+类名(即com.mycompany.project.hibernate.FR_ACCOUNT_MST)

来源:http://www.cereslogic.com/pages/2008/08/05/hibernate-tools-tips-for-reverse/

package com.altenor.coffre.generated;

import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.TableIdentifier;

public class CoffreReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy {

    public CoffreReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {
        super(delegate);
    }

    //add Base before class name
    public String tableToClassName(TableIdentifier tableIdentifier) {
          String className = super.tableToClassName(tableIdentifier);
          return className+"VO";
        }
}

Right, you have to extend the DelegatingReverseEngineeringStrategy class (hibernate-tool.jar lib) and override tableToClassName method.

The code below will rename FR_ACCOUNT_MST to FR_ACCOUNT_MSTVO.

I let you use some regex to get the result wanted.

The variable className contains the package + class name (ie. com.mycompany.project.hibernate.FR_ACCOUNT_MST)

Source: http://www.cereslogic.com/pages/2008/08/05/hibernate-tools-tips-for-reverse/

package com.altenor.coffre.generated;

import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.TableIdentifier;

public class CoffreReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy {

    public CoffreReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {
        super(delegate);
    }

    //add Base before class name
    public String tableToClassName(TableIdentifier tableIdentifier) {
          String className = super.tableToClassName(tableIdentifier);
          return className+"VO";
        }
}
提笔落墨 2024-10-28 11:22:01

或者您可以通过在 hibernate.reveng.xml 文件中添加每个 pojo 的名称来实现:

<hibernate-reverse-engineering>
  <table-filter match-schema="CO" match-name="FR_ACCOUNT_MST"/>

  <table name="FR_ACCOUNT_MST" schema="CO" class="com.bonables.co.hibernate.pojo.accountMstVO" />

</hibernate-reverse-engineering>

Or you can do it by adding in the hibernate.reveng.xml file the name of each pojo:

<hibernate-reverse-engineering>
  <table-filter match-schema="CO" match-name="FR_ACCOUNT_MST"/>

  <table name="FR_ACCOUNT_MST" schema="CO" class="com.bonables.co.hibernate.pojo.accountMstVO" />

</hibernate-reverse-engineering>
街道布景 2024-10-28 11:22:01

我假设您正在使用 Hibernate Tool 的功能从数据库元数据对域模型类进行逆向工程。在这种情况下,您可能想要实现自定义的 org.hibernate.cfg.reveng.ReverseEngineeringStrategy,如 此处

I am assuming that you are using Hibernate Tool's ability to reverse engineer the domain model classes from database metadata. In that case, you might want to implement a custom org.hibernate.cfg.reveng.ReverseEngineeringStrategy as explained here.

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