2014-12-08 3 views
0

내 hibernate.cfg.xml 파일."session-factory"는 "(property *, mapping *, (class-cache | collection-cache) *, event *, listener *)와 일치해야합니다."

public class HibernateTest { 
    private static Object configuration; 


    public static void main(String[] args) { 
     UserDetails user = new UserDetails(); 
     user.setUserId(1); 
     user.setUserName("First User"); 

     Configuration configuration = new Configuration().configure("hibernate.cfg.xml"); 
     StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder(). 
     applySettings(configuration.getProperties()); 
     SessionFactory factory = configuration.buildSessionFactory(builder.build()); 


     Session session = factory.openSession(); 
     session.beginTransaction(); 
     session.save(user); 
     session.getTransaction().commit(); 

    } 

} 

XML 파일, 거기에 어떤 문법 실수를 확인하지 않았다 : 여기

<?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" > 

<hibernate-configuration> 
<session-factory> 
- <!-- Database connection settings 
    --> 
    <property name="connection.driver_class">org.h2.Driver</property> 
    <property name="connection.url">jdbc:h2://localhost:1527/hibernatedb</property> 
    <property name="connection.username">h2</property> 
    <property name="connection.password" /> 
- <!-- JDBC connection pool (use the built-in) 
    --> 
    <property name="connection.pool_size">1</property> 

- <!-- Disable the second-level cache 
    --> 
    <property name="cache.provider_class">org.hibernate.cache.internal.CollectionCacheInvalidator 
    </property> 
- <!-- Echo all executed SQL to stdout 
    --> 
    <property name="show_sql">true</property> 
- <!-- Drop and re-create the database schema on startup 
    --> 
    <property name="hbm2ddl.auto">create</property> 

    - <!-- SQL dialect 
    --> 
    <property name="dialect">org.hibernate.dialect.H2Dialect</property> 

- <!-- Names the annotated entity class 
    --> 
    <mapping class="firsthibernateproj.UserDetails" /> 

    </session-factory> 
    </hibernate-configuration> 

은 내가 사용하는 클래스입니다.

어떤 아이디어로도이 문제를 해결할 수 있습니까?

+1

추측 유일한 실수

전에 모든 사람들'-' 문자인가해야한다 정말 C에 대한 의견 ode, 또는 일부 형식 지정 오타가 있습니까? –

+0

귀하의 스택 트레이스를 표시 –

+0

- 문자는 코드 – Max

답변

1

내 프로젝트에 복사 된 파일도 같은 오류를보고하지만 모든 주석 앞에있는 -자를 제거하면 오류가 사라집니다. xml 형식을 지정하는 일부 응용 프로그램의 내용을 복사 했습니까? 예 : Internet Explorer가

편집 :

가 난 그냥 시퀀스에서 모든 XML 태그를 배치하여이 문제를 해결 한 같은 problem.But에서 통과 한이

<?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" > 

<hibernate-configuration> 
<session-factory> 
    <!-- Database connection settings 
    --> 
    <property name="connection.driver_class">org.h2.Driver</property> 
    <property name="connection.url">jdbc:h2://localhost:1527/hibernatedb</property> 
    <property name="connection.username">h2</property> 
    <property name="connection.password" /> 
    <!-- JDBC connection pool (use the built-in) 
    --> 
    <property name="connection.pool_size">1</property> 

    <!-- Disable the second-level cache 
    --> 
    <property name="cache.provider_class">org.hibernate.cache.internal.CollectionCacheInvalidator 
    </property> 
    <!-- Echo all executed SQL to stdout 
    --> 
    <property name="show_sql">true</property> 
    <!-- Drop and re-create the database schema on startup 
    --> 
    <property name="hbm2ddl.auto">create</property> 

    <!-- SQL dialect 
    --> 
    <property name="dialect">org.hibernate.dialect.H2Dialect</property> 

    <!-- Names the annotated entity class 
    --> 
    <mapping class="firsthibernateproj.UserDetails" /> 

    </session-factory> 
    </hibernate-configuration> 
+0

또 다른 문제는 스레드에서 예외를 나타납니다이 경우는 "주요"org.hibernate.exception.JDBCConnectionException : 오류 호출 드라이버 번호가에 의한 를 연결합니다 org.h2를 .jdbc.JdbcSQLException : "//"파일을 만드는 동안 오류가 발생했습니다. [90062-181] – Max

+0

이 질문과 관련없는 h2 드라이버 구성입니다. –

0

을 시도한다는 않습니다 ..

0

인터넷에서 소스 코드를 잘못 (즉, 대상 파일의 인코딩과 일치하지 않음) 인코딩으로 복사하면이 문제가 발생합니다. 모든 공백, 줄 바꿈, 모든 문자를 손으로 겹쳐 쓰면 파일이 작동합니다.

다른 방법으로 코드를 "어리석은"편집기에 붙여넣고 모두 표시하고 다시 복사 할 수도 있습니다. 그것은 트릭도 할 수 있습니다 (테스트하지 않음).

0

나는 같은 오류가 있습니다. 약 1 시간 동안 검색 및 재배포 한 후 그것은 내가 실수로 구성 파일의 어딘가에 'Q'를 입력하고 그것을 볼 수 없다는 것이 밝혀졌습니다. 파일을 자세히 확인하십시오. 철자가 틀리거나 몇자를 입력해야합니다.

0

이 문제는 구성 파일을 먼저 첫 번째 목록 속성으로 매핑하고 마지막으로 캐시하지 않을 때 발생합니다.

0

나는 한번도 같은 오류에 직면했다. hibernate.cfg.xml에 설명 줄을 썼다는 것을 알았습니다.

동일한 실수를 한 것 같습니다. conf 파일의 모든 주석 앞에 하이픈이 추가로 표시됩니다.

"

- <!-- JDBC connection pool (use the built-in) 
    --> 

"

그것은 "

<!-- JDBC connection pool (use the built-in) 
    --> 

"내가