2012-05-07 63 views
1

我正在使用hibernate-core-4.1.3.Final.jar。在插入数据到表中我收到以下错误:休眠错误:org.xml.sax.SAXParseException:必须声明元素类型“hibernate-mapping”

org.xml.sax.SAXParseException: Element type "hibernate-mapping" must be declared.

我的映射文件如下:

<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated May 7, 2012 3:07:47 PM by Hibernate Tools 3.4.0.CR1 --> 
<hibernate-mapping> 
<class name="com.paypal.socialpay.models.User" table="user" catalog="socialdb"> 
    <id name="id" type="java.lang.Integer"> 
     <column name="id" /> 
     <generator class="identity" /> 
    </id> 
    <property name="payerid" type="string"> 
     <column name="payerid" length="50" not-null="true" /> 
    </property> 
    <property name="emailid" type="string"> 
     <column name="emailid" length="100" not-null="true" /> 
    </property> 
    <property name="createdDt" type="timestamp"> 
     <column name="created_dt" length="0" not-null="true" /> 
    </property> 
    <property name="updatedDt" type="timestamp"> 
     <column name="updated_dt" length="0" not-null="true" /> 
    </property> 
    <property name="firstname" type="string"> 
     <column name="firstname" length="100" /> 
    </property> 
    <property name="lastname" type="string"> 
     <column name="lastname" length="100" /> 
    </property> 
    <property name="correlationid" type="string"> 
     <column name="correlationid" length="100" /> 
    </property> 
</class> 
</hibernate-mapping> 

错误的堆栈跟踪是:

org.xml.sax.SAXParseException: Element type "hibernate-mapping" must be declared. 
    at org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1213) 
    at org.apache.xerces.validators.common.XMLValidator.reportRecoverableXMLError(XMLValidator.java:1807) 
    at org.apache.xerces.validators.common.XMLValidator.validateElementAndAttributes(XMLValidator.java:3633) 
    at org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:1229) 
    at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:938) 
    at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381) 
    at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098) 
    at org.dom4j.io.SAXReader.read(SAXReader.java:465) 
    at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:78) 
    at org.hibernate.cfg.Configuration.add(Configuration.java:478) 
    at org.hibernate.cfg.Configuration.add(Configuration.java:474) 
    at org.hibernate.cfg.Configuration.add(Configuration.java:647) 
    at org.hibernate.cfg.Configuration.addResource(Configuration.java:730) 
    at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2109) 
    at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2081) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2061) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2014) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1929) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1908) 
    at com.paypal.utils.HibernateUtil.<clinit>(HibernateUtil.java:12) 
    at com.paypal.utils.UserService.findUserByEmail(UserService.java:29) 
    at com.paypal.socialpay.controllers.APIController.doGetAuthDetails(APIController.java:257) 
    at com.paypal.socialpay.controllers.APIController.handleRequest(APIController.java:73) 
    at com.paypal.socialpay.controllers.APIController.doPost(APIController.java:55) 
    at com.paypal.socialpay.controllers.APIController.doGet(APIController.java:49) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:680) 
+0

有没有人遇到过类似的问题? – Hozefa

+0

DOCTYPE中指定的DTD与项目中存在的DTD不匹配。请纠正它 – rags

+0

@rags:你能告诉我我需要纠正什么吗?我正在指定编码类型。但我仍然得到错误。此外,xml文件是通过休眠自动生成的。 – Hozefa

回答

0

如果在开始<hibernate-mapping>标记之前标头中存在任何非法字符,则会发生此行为。这甚至可以是不可打印的字符。

这种情况发生的另一个原因是错误的字符编码。在我的映射文件的第一行始终是

<?xml version="1.0" encoding="utf-8"?> 
+0

我尝试添加编码,但仍然收到相同的错误。 – Hozefa

相关问题