当前位置: 代码迷 >> Java Web开发 >> org.hibernate.MappingException: invalid configuration,该如何解决
  详细解决方案

org.hibernate.MappingException: invalid configuration,该如何解决

热度:894   发布时间:2016-04-15 22:38:20.0
org.hibernate.MappingException: invalid configuration
报错:
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/Documents/Downloads/%e6%96%b0%e5%bb%ba%e6%96%87%e4%bb%b6%e5%a4%b9/%e5%ae%89%e8%a3%85%e6%96%87%e4%bb%b6/hibernate-anno-jar/hibernate-core/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/Documents/Downloads/%e6%96%b0%e5%bb%ba%e6%96%87%e4%bb%b6%e5%a4%b9/%e5%ae%89%e8%a3%85%e6%96%87%e4%bb%b6/slf4j-1.7.7/slf4j-1.7.7/slf4j-nop-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" org.hibernate.MappingException: invalid configuration
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1521)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1462)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1448)
at test.StudentTest.main(StudentTest.java:17)
Caused by: org.xml.sax.SAXParseException; lineNumber: 3; columnNumber: 25; 文档无效: 找不到语法。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:227)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:604)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3130)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:880)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
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:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1518)
... 3 more

-----------------------------------------
StudentTest.java:
package test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.bjsxt.hibernate.model.Student;

public class StudentTest {
public static void main(String[] args){
Student s = new Student();//创建一个student对象
s.setId(1);
s.setName("s1");
s.setAge(1);

Configuration cfg = new Configuration();//用来读配置文件的
SessionFactory sf = cfg.configure().buildSessionFactory();
Session session = sf.openSession();//打开一个新的session
session.beginTransaction();
session.save(s);
session.getTransaction().commit();
session.close();
sf.close();

}
}
-----------------------------------
第17行:
SessionFactory sf = cfg.configure().buildSessionFactory();
-----------------------------------
一直说我的第17行有错,实在是找不出来原因
请各位路过的兄弟姐妹指点。。。

------解决思路----------------------
Configuration cfg = new Configuration() 你要读取的配置文件呢??哪里去了??
------解决思路----------------------
hibernate配置文件贴出来啊,应该是hibernate 配置文件中的 mapping resource的类路径错了。
------解决思路----------------------
引用:
Quote: 引用:

Configuration cfg = new Configuration() 你要读取的配置文件呢??哪里去了??

贴出来了亲。。
麻烦帮我看一下哦。。
谢谢。。


亲。。不是让你贴配置文件代码
你的那个test要读取配置文件对吧。你配置文件路径呢?我好像记得要指定读取那个配置文件的。。还有你的17行代码是哪一行?
------解决思路----------------------
我记得这个测试需要把你的配置的路径加载的。。是不是没有加载的原因呢?我没看到你那里有加载你的hibernate.cfg.xml这个文件
------解决思路----------------------
引用:
Quote: 引用:

我记得这个测试需要把你的配置的路径加载的。。是不是没有加载的原因呢?我没看到你那里有加载你的hibernate.cfg.xml这个文件

谢谢亲,已经解决了,是我的配置文件的头写错了。。
以前的头:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration
        xmlns="http://www.hibernate.org/xsd/hibernate-configuration"
        xsi:schemaLocation="http://www.hibernate.org/xsd/hibernate-configuration hibernate-configuration-4.0.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
修改后的头:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

改成这个样子就可以了。。

恭喜
  相关解决方案