2013-07-27 1 views
2

Hibernate를 처음 사용하고 기괴한 오류가 발생 함. 4.2.3 Final 버전을 사용하고 있고 과 같이 4.0 XSD 스키마를 사용하지만 작동하도록하려면 3.0 DTD를 사용합니다.4.0 XSD에서 Hibernate 예외

내 드라이버 :

public static void main(String[] args) { 
    Configuration configuration = new Configuration(); 
    configuration.configure("hibernate/cfg/hibernate.cfg.xml"); 
    ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder().applySettings(configuration 
      .getProperties()); 
    SessionFactory sessionFactory = configuration 
      .buildSessionFactory(serviceRegistryBuilder.buildServiceRegistry()); 
    Session session = sessionFactory.openSession(); 

    Transaction tx = session.beginTransaction(); 

    User user = new User("Dr.", "Sylvester", "McMonkey", "McBean", "IV"); 

    session.save(user); 
    tx.commit(); 
    session.close(); 
} 

hibernate.cfg.xml 파일, src/main/config/hibernate/cfg에서 내 프로젝트에 있습니다 :

<?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"> 
    <session-factory> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
     <property name="hibernate.connection.driver">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.url">jdbc:mysql://my-server:3306/my_db</property> 
     <property name="hibernate.connection.username">myuser</property> 
     <property name="hibernate.connection.password">password</property> 

     <property name="show_sql">true</property> 
     <property name="format_sql">true</property> 
     <property name="use_sql_comments">true</property> 

     <property name="hbm2ddl.auto">validate</property> 

     <mapping resource="User.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

그리고 스택 트레이스 이클립스는 저를주고있다 :

Jul 27, 2013 9:10:08 AM org.hibernate.annotations.common.Version <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {4.0.2.Final} 
Jul 27, 2013 9:10:08 AM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {4.2.3.Final} 
Jul 27, 2013 9:10:08 AM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Jul 27, 2013 9:10:08 AM org.hibernate.cfg.Environment buildBytecodeProvider 
INFO: HHH000021: Bytecode provider name : javassist 
Jul 27, 2013 9:10:08 AM org.hibernate.cfg.Configuration configure 
INFO: HHH000043: Configuring from resource: hibernate/cfg/hibernate.cfg.xml 
Jul 27, 2013 9:10:08 AM org.hibernate.cfg.Configuration getConfigurationInputStream 
INFO: HHH000040: Configuration resource: hibernate/cfg/hibernate.cfg.xml 
Exception in thread "main" org.hibernate.MappingException: invalid configuration 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2070) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1987) 
    at com.apponomical.adaptors.datasource.HibernateDriver.main(HibernateDriver.java:15) 
Caused by: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 25; Document is invalid: no grammar found. 
    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:387) 
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:321) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:226) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:602) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3080) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:899) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:625) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:819) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:748) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:525) 
    at org.dom4j.io.SAXReader.read(SAXReader.java:465) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2067) 
    ... 2 more 

생각을? 아이디어? 제안? 미리 감사드립니다!

답변

1

유효성 검사기가 스키마를 찾지 못했습니다. xsi : schemaLocation 속성은 유효성 검사를하고있는 설정 문서 (.../src/main/config/hibernate/cfg)와 같은 디렉토리에있는 스키마 문서 hibernate-configuration-4.0.xsd를 찾도록 지시한다. 네가 가지고있는 곳인가?

0

Hibernate 4.x에서는 더 이상 사용되지 않는 경고가 제거 된 bug report으로 볼 수있는 것과 같은 DTD 3.x를 사용해야합니다. 또한 4.2 버전 용 자습서에서는 here을 볼 수 있습니다.