hibernate逆向工程遇到的问题总结

先简单说一下如何配置逆向功能

1、首先肯定是要安装hibernate-tools插件,这个自己百度一大堆

2、连接eclipse自带的Data Source

3、配置hibernate-tools

前面这些操作百度上都可以搜得到,就不详细说明啦,主要是下面遇到一些坑。

1、配置hibernate时候遇到问题An error has occurred. See error log for more details.
org/eclipse/jpt/jpa/core/JpaFacet

解决:在配置时候不选择Project选项就可以了

2、因为数据库的表名和我想要生成的实体类名称不一致,因此需要改名字。

解决方法有两种。

   1)、 打开hibernate-revenge.xml,打开table&Column视图,点击add,在class name框可以输入想要生成的实体名称

  2)、自定义类,实现org.hibernate.cfg.reveng.DefaultReverseEngineeringStrategy类,重写 tableToClassName方法,在这个方法里面就可以用代码过滤成你想要的实体名称

以下为个人代码(去掉下划线以及前面的表格标注)

import org.hibernate.cfg.reveng.DefaultReverseEngineeringStrategy;  
import org.hibernate.cfg.reveng.ReverseEngineeringSettings;  
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;  
import org.hibernate.cfg.reveng.TableIdentifier;  
public class CustomReverseEngineeringStrategy extends  
       DefaultReverseEngineeringStrategy {  
 
   public CustomReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {  
       super();  
   }  
    
   public CustomReverseEngineeringStrategy(){  
   }  
 
   private ReverseEngineeringSettings settings;  
    
   @Override  
   public String tableToClassName(TableIdentifier table) {  
       String tableName = table.getName();  
       if (tableName != null && (tableName.toUpperCase().startsWith("T_NY_") || tableName.toUpperCase().startsWith("TBL_"))) {  
           String pkgName = settings.getDefaultPackageName();  
           String arr[] = tableName.split("_");
           StringBuffer sb = new StringBuffer();
           for(String str : arr) {
        	   sb.append(Character.toUpperCase(str.charAt(0))).append(str.substring(1));
           }
           String callName = sb.substring(3);
           return callName;  
 
       } else {  
           return super.tableToClassName(table);  
       }  
   };  
 
   public void setSettings(ReverseEngineeringSettings settings) {  
       super.setSettings(settings);  
       this.settings = settings;  
   }  
}  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值