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

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

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

2、连接eclipse自带的Data Source

hibernate逆向工程遇到的问题总结_第1张图片

3、配置hibernate-tools

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

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

hibernate逆向工程遇到的问题总结_第2张图片

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

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

解决方法有两种。

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

hibernate逆向工程遇到的问题总结_第3张图片

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

 

你可能感兴趣的:(hibernate逆向工程遇到的问题总结)