使用myeclipse的hibernate reverse engineering(反向工程)的两个问题

hhboyggyy 2012-10-08

问题一:

今天新建了一个hibernate工程,然后使用反向工程,第一次成功的,但由于反向工程结束后,发现了一些问题,于是就把实体类和xml配置文件都删除了,准备再反向工程一次,结果就遇到了问题。不管怎么点hibernate reverse engineering选项,都没有对话框弹出来。

于是我就又在其他的工程中试了下,发现还是没对话框弹出来,接着我就新建了一个工作空间然后重复反向工程的操作,结果发现居然可以打开了。所以我就认为是工作空间的设置问题,即便之前我都没修改过原来的工作空间的配置,但还是在配置方面研究了很久,最后仍然不得其果。

实在没办法了,我就到google去搜索,在一个外国网站上,发现也有人遇到和我一样的问题,看了他们的交流后,我知道该怎么修复问题了,他们的原文是这样的:

That is odd, it shouldn't fail to open as you described. I've filed a PR on this for internal investigation.

Togetyoustartedimmediately,openthe.myhibernatedatafileinyourcurrentprojectandfindthelinewhichsaysreSettingsFile=...anddeletetheentirelineandsavethefile.

Closeandreopenyourprojectandthentryinvokingthewizard.

Let us know how it goes,
大概的意思就是找到工程目录下的.myhibernatedata文件,然后找到reSettingsFile=...那行,最后删除整行。
我照着他的意思做完后,就发现点击hibernate reverse engineering后终于弹出了对话框,可以进行反向工程了。
 
============================================================================================
 
问题二:
    第2个问题是不管我进行多少次反向工程,每次创建的实体类都在默认包里,即便是我指定了哪个包,他还是只在默认包中创建实体类,这使我百思不得其解,虽然在google搜了很久,但还是没找到解决的办法。
    后来我在检查每一个文件的时候,发现hibernate.reveng.xml文件中,table节点的属性class的值是实体类的类名,这个class属性的值是当我们在进行反向工程的时候人为的去修改数据表对应的实体类类名的时候我们所取的那个名字,因为mysql中不管是表名还是列名都是小写的,反向后的实体类的拼写方法不太符合java的类名取值习惯,所以我就对他进行了修改。
    于是我就想,会不会是因为这个值前没有带包名,所以才放到了默认包下,于是我就在修改class名的时候在类名前填写了我的完整包名,然后finish,结果发现实体类都完好的跑到应该到的包下去了。
     回看hibernate.reveng.xml中的table节点下的class属性的值就已经带有了完整包名了。

相关推荐