关于hibernate中hbm.xml文件报错的解决
Published by admin on 05月 13, 2008
报错信息片断如下:
| [java] log4j:WARN No appenders could be found for logger (org.hibernate.cfg .Environment). [java] log4j:WARN Please initialize the log4j system properly. [java] org.hibernate.InvalidMappingException: Could not parse mapping docum ent from resource Customer.hbm.xml [java] at org.hibernate.cfg.Configuration.addResource(Configuration.jav a:569) [java] at org.hibernate.cfg.Configuration.parseMappingElement(Configura tion.java:1587) [java] at org.hibernate.cfg.Configuration.parseSessionFactory(Configura tion.java:1555) [java] at org.hibernate.cfg.Configuration.doConfigure(Configuration.jav a:1534) [java] at org.hibernate.cfg.Configuration.doConfigure(Configuration.jav a:1508) [java] at org.hibernate.cfg.Configuration.configure(Configuration.java: 1428) [java] at org.hibernate.cfg.Configuration.configure(Configuration.java: 1414) [java] at Test.main(Unknown Source) [java] Caused by: org.hibernate.InvalidMappingException: Could not parse ma pping document from invalid mapping [java] at org.hibernate.cfg.Configuration.addInputStream(Configuration. java:502) [java] at org.hibernate.cfg.Configuration.addResource(Configuration.jav a:566) [java] … 7 more [java] Caused by: org.xml.sax.SAXParseException: 文档根元素“hibernate-mapp ing”必须与 DOCTYPE 根“hibernate-configuration”匹配。 |
在按照《纯hibernate学习(包含小实例)》一文中的过程进行学习时,出现了上述问题,因为我用的是hibernate3.2和DB2-9,具体的下载的文件的名字是:hibernate-3.2.5.ga.zip & db2exc_912_WIN_x86.zip
所以一直以为是数据库连接和hibernate.cfg.xml文件配置引起的问题。后来在网上也没有找到具体的原因。最后发现是由于*.hbm.xml文件头元素<!DOCTYPE>引起的:
错误的DOCTYPE:
| <!DOCTYPE hibernate-mapping PUBLIC ”-//Hibernate/Hibernate Mapping DTD 3.0//EN” ”http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd“> |
正确的DOCTYPE:
| <!DOCTYPE hibernate-mapping PUBLIC ”-//Hibernate/Hibernate Mapping DTD//EN” ”http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd” > |
于是看出hibernate3.2还是沿用了以前3.2之前的版本的DOCTYPE书写规范。也许这是我个人遇到的问题,但是感觉确实小问题有时候也真的让人搞到愤怒。具体为啥会这样,我也不太清楚。还请高手提示一下啊!
——————Hibernate3.2.5 连接 DB2exc9的具体配置—————————-
下面我把具体的把我配置文件和映射文件给出,希望能给大家提供方便,并欢迎及时交流。
hibernate.cfg.xml文件的具体代码如下:
| <?xml version=”1.0″?> <!DOCTYPE hibernate-configuration PUBLIC ”-//Hibernate/Hibernate Configuration DTD 3.0//EN” ”http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd“> <hibernate-configuration> <session-factory name=”java:/hibernate/HibernateFactory”> <property name=”show_sql”>true</property> <property name=”connection.driver_class”>COM.ibm.db2.jdbc.app.DB2Driver</property> <property name=”connection.url”>jdbc:db2:hib_test</property> <property name=”connection.username”>administrator</property> <property name=”connection.password”> hdwt41092900hdwt</property> <property name=”dialect”>org.hibernate.dialect.DB2Dialect</property> <mapping resource=”Customer.hbm.xml”/> </session-factory> </hibernate-configuration> |
1.请大家注意:在hibernate.cfg.xml文件中的DOCTYPE和Customer.hbm.xml文件中的DOCTYPE是不一样的,但是hibernate.cfg.xml不报错,所以我也很奇怪,并且hibernate.cfg.xml文件中的DOCTYPE用的还是hibernate3.2.5中自带的例子中用到的。
Customer.hbm.xml的具体代码如下:
| <?xml version=”1.0″?> <!DOCTYPE hibernate-mapping PUBLIC ”-//Hibernate/Hibernate Mapping DTD//EN” ”http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd” > <hibernate-mapping> <class name=”Customer” table=”CUSTOMER”> <id type=”java.lang.Integer” name=”id” column=”CID” length=”4″ unsaved-value=”null”> <generator class=”increment”/> </id> <property type=”string” name=”username” column=”USERNAME” length=”12″> </property> <property type=”string” name=”password” column=”PASSWORD” length=”12″> </property> </class> </hibernate-mapping> |
上一篇文章:« Hibernate Annotations 实战
下一篇文章:深入理解abstract class和interface概念 »
【版权说明】:本网页上有部分内容来源于网上收集,但不能保证资料的完整性和准确性,仅提供参考和学习。如有侵权请立即通知我们,我们将立即删除,谢谢合作!

Add A Comment