我想知道如何在使用hibernate生成POJO时更改其名称。
我的表的命名约定为:FR_和TRN_。 在生成POJO时,我想删除FR和TRN并将VO附加到名称上。
例如,
表格名称:FR_ACCOUNT_MST
要生成的POJO :accountMstVO
谢谢, VARUN
答案 0 :(得分:8)
是的,你必须扩展 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";
}
}
答案 1 :(得分:5)
或者你可以通过在 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>
答案 2 :(得分:1)
我假设你正在使用Hibernate Tool从数据库元数据中反向设计域模型类的能力。在这种情况下,您可能希望按照here所述实现自定义org.hibernate.cfg.reveng.ReverseEngineeringStrategy
。