在07年的时候开始接触Hibernate ,便结识了Hibernate Synchronizer ,随后虽然出现了jboss的jboss tool工具,但由于习惯,就一直在使用Hibernate Synchronizer 。
此外,尽量还是自己搭建开发环境,不愿意使用myEclipse,觉得myEclipse里的Tomcat不好用,而且集成的插件好慢,很多用不上,在使用myEclipse为项目添加ssh时,又有好多不需要的jar,因此一直自己使用Eclipse整合。所以一直使用Hibernate Synchronizer 。
以前在学校的时候,因为项目都不着急,DAO文件都是自己写,但是最近工作了,去了单位,自己接了一个项目,由于时间有限,于是试着使用Hibernate Synchronizer 来自动生成DAO,结果发现问题。
大量的报错出现了……
常见的有:
org.hibernate.HibernateException: Could not parse configuration:
加一个
root cause org.dom4j.DocumentException: Error on line 1 of document : Content is not allowed in prolog. Nested exception: Content is not allowed in prolog.
在网上有很多人都说是,hibernate.cfg.xml和*.hbm.xml文件的编码问题,经我自己尝试以及大量人回帖发现,这个解决办法不是有效的。感觉这个说法在误导人,至少不适合我和大部分人的情况。
我解决的方法一是,由于我的数据库是mysql,使用的是utf8建表,而hibernate.cfg.xml中的属性
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/8-ok</property>
必须明确数据库的建表方式才行,经修改为:
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/8-ok? seUnicode =true &characterEncoding=UTF-8</property>
即可,这个是我查阅的资料,相关来源:
http://blog.csdn.net/fenglx871004/archive/2009/03/10/3975589.aspx
相对比较清晰。
方法二:我写hql语句的时候,也出现过这个问题,主要是
From 表名 where 属性=
属性写成了数据库的字段,这里要注意的是,hql是面向对象操作的,因此,不要写数据库的字段,否则会报错!
方法三:
在你使用Hibernate Synchronizer 自生成的DAO文件的时候也会报这个错误,之所以出现这个错误是因为,在做save()时候没有initialize hibernate.cfg.xml文件,在你做save()操作前,写上
_RootDAO.initialize();
这句就好了……而不是像很多人说的--是Hibernate Synchronizer 的DAO生成错误……,不该没仔细查查资料就妄断是插件的错误,毕竟这个插件也是经过几百万人的验证那!
具体原因,因为太晚了,明天再分析吧,先写下来,供大家帮助吧
这篇文章给我很多帮助
http://hi.baidu.com/langchao826/blog/item/7bc874d74ddd95d1a044df9f.html