抛出了这样的错误:
Exception in thread "main" org.hibernate.InvalidMappingException: Could not parse mapping document from resource h/Person.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:586)
at org.hibernate.cfg.Configuration.addClass(Configuration.java:633)
at h.TestPerson.main(TestPerson.java:18)
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from invalid mapping
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:549)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:583)
... 2 more
Caused by: org.xml.sax.SAXParseException: The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2017)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:901)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:546)
... 3 more我的Person.hbm.xml的配置是这样的:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="h">
<class name="Person" table="Person">
<meta attribute="class-description">
        Redivsents a single playable track in the music database.
        @author Jim Elliot(with help from Hibernate)
     </meta>

<!--hibernate为我们生成主键id-->
<id name = "id" type="int" unsaved-value = "null">
<generator class="uuid.hex"></generator>
</id>
   
<!--默认把类的变量映射为相同名字的表列,当然我们可以修改其映射方式-->
<property name="name" type="char" not-null="false"></property>
<property name="address" type="varchar"></property>
</class>
</hibernate-mapping>急,请高手帮忙解决,小弟是新人菜鸟,分不多,不好意思~

解决方案 »

  1.   

    Caused by: org.xml.sax.SAXParseException: The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*)". 看到这个错误的提示了?你的h/Person.hbm.xml这个xml写的没有满足hibernate -3的dtd规范,好好改改。
      

  2.   

    你只指定了User类所对应DB里的哪个table:
     <class name="Person" table="Person">
    但没指定bean类的属性对应DB里table的哪个字段
    <property name="name" type="char" not-null="false" > </property> 
    <property name="address" type="varchar"> </property> 
    在<property>中加上column
      

  3.   

    <property name="address" type="varchar"> </property> 
    这里的varchar是数据库的类型,那要改成string或者是java.lang.String才可以的,还有<property name="name" type="char" not-null="false" > </property> 中的
    type="char"类型应该也不对的吧
      

  4.   

    顶楼上! 楼上说的对呢 注意要用Java里面的类型!