我想知道如何在使用休眠生成 POJO 时更改它的名称。
我的表有一个命名约定:FR_ 和 TRN_。在生成 POJO 时,我希望删除 FR 和 TRN 并将 VO 附加到名称中。
例如,
表名:FR_ACCOUNT_MST
要生成的 POJO:accountMstVO
谢谢,瓦伦
我想知道如何在使用休眠生成 POJO 时更改它的名称。
我的表有一个命名约定:FR_ 和 TRN_。在生成 POJO 时,我希望删除 FR 和 TRN 并将 VO 附加到名称中。
例如,
表名:FR_ACCOUNT_MST
要生成的 POJO:accountMstVO
谢谢,瓦伦
对,您必须扩展DelegatingReverseEngineeringStrategy类(hibernate-tool.jar 库)并覆盖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";
}
}
或者您可以通过在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>
我假设您正在使用 Hibernate Tool 从数据库元数据逆向工程领域模型类的能力。在这种情况下,您可能希望按照此处org.hibernate.cfg.reveng.ReverseEngineeringStrategy
的说明实现自定义。