以前用myeclipse,傻瓜化很方便,所以很多东西都没有去仔细注意,直到这几天把工具换为eclipse+jbosstools后,使用hibernate tools生成hbm.xml映射出现了问题:
org.hibernate.MappingException: Unknown entity: com.hiber.entity.#
很容易看出故障,不能查找到实体,google查了几个小时,得到各种原因,但都没能解决问题。
只好自己debug.
以前没有调试过这么大型的框架,一直没有多大把握,一般问题都是直接google就好了,现在是没办法:
第一步:下载下来hibernate source包,在eclipse中建立路径如下:
src
java
....自己的代码
debug
....hibernate源代码
把debug放入classpath中
第二步:找到问题点:
org.hibernate.MappingException: Unknown entity:#
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:589)
打开SessionFactoryImpl类,定位到点,添加debug代码,检查对象内容,查找对象在此类中可改变的方法名,分别添加对象改变时候的内容显示代码
然后运行到程序点
这样,得到被添加的entity名字,然后检查输入,输入代码不写了,很容易判断 出cfg对象输入的。
第三部,判断原因:
19:46:05,224 DEBUG SessionFactoryImpl:583 - -----------------Event
根据这个事实上就可以看出来时怎么回事了。
原来hibernate tools自动生成配置文件的时候添加了entity-name="Event" 而在程序运行上下文的时候,我们一般使用的是class名
dubug到此结束,所花时间不超过30分钟。