补充org.hibernate.InvalidMappingException: Unable to read XML 的原因

来源:互联网 发布:单片机脉冲信号发生器 编辑:程序博客网 时间:2024/04/29 03:21
        欲从事JavaWeb开发的朋友们,刚接触Hibernate时遇到如题的问题是很令人头疼的,我便是年轻的受害者之一。

        每当我们点击运行或是调试时,来不来就看到Console下一片惨红,一股不好的预感提示我们,揪心的事儿来了,哈哈……

        此时我们需要的是深吸一口气,静下心来,慢慢分析问题之所在。就我所遇,出现如题的问题一般情况:

       1、*.hbm.xml文件的路径不对。这分两个小点,一是本身这个文件的位置没有放对,二是hibernate.cfg.xml中配置的路径不对,这就取决于我们喜欢改那个地方了。

       2、*.xml的文件中存在语法错误。一般用工具生成的xml文件不会存在这类错误,但是对于像我这样的初学者,喜欢自己去手动配置,这就难免会遇到输入错误的情况。我今天也正是如此,“org.xml.sax.SAXParseException: Attribute "colum" must be declared for element type "id".”,这是另一句异常,我闷头闷脑的找了多半天也没有发现错误所在,您发现了吗,哈哈,我的column关键字输错了,嗯,正是如此。

       3、可能是你应用其它外部包中有与数据库相关的操作导致与Hibernate冲突,致使Hibernate最初就无法配置。例如我在使用JFreeChart的时候,我在网上看到需要导入gnujaxp.jar、jcommon-1.0.17.jar、jfreechar-1.0.14,当我导入后再运行即抛出异常,我想可能是包的版本不兼容,结果换来换去还是有问题,最后删掉“gnujaxp.jar”对了,其中详细缘由我也不清楚。



以上来自http://blog.csdn.net/horace20/article/details/6535069感谢作者总结,根据我自己的情况,在这里补充我的情况。


我们队长总结是这样的(http://team.aitinan.com/)不知道他是出啥错了,反正就有这一项修改

---------------------------------------------------------------------------------------------------

2.xxx.hbm.xml:

http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd

更改为

http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd

---------------------------------------------------------------------------------------------------



 我的情况是这样的:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd ">


我的情况最奇葩了,在dtd之后反引号之前加了个空格,导致题目的unable to read xml


以前好像也出现过这样的问题,xml文件里面要很小心,不能多一个空格,也不能少一个空格。


以前出现的问题如下

<property name="MName"type="java.lang.String">           

在type和前面的反引号之间少了个空格,也是半天才查出错。



搞IT不细心,搞个屁啊!!!!


好吧,我又配置了一遍,发现这个空格是IDE自动生成。这个没办法了。队长说的对,IDE不可信~