您的位置:首页 > 编程语言 > Java开发

使用myeclipse的hibernate r…

2017-03-21 16:18 323 查看
原文地址:使用myeclipse的hibernate reverse engineering(反向工程)的两个问题作者:淡定

今天用hibernate的反向工程碰到两个蛮麻烦的问题,于是就写下来一方面做个记录,以后可以翻查到,另一方面可以帮助其他遇到这些问题的朋友。
 
问题一:

今天新建了一个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.

To get you started immediately, open the .myhibernatedata file in
your current project and find the line which says
reSettingsFile=... and delete the entire line and save the
file.

Close and reopen your project and then try invoking the
wizard.

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属性的值就已经带有了完整包名了。
 

===============================================================================================
以上是我遇到的两个问题,希望对大家能有所帮助。
  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: