2017-06-13 17 views
0

私はハイバーネーションチュートリアル(basic)で与えられたプログラムを実行しようとしていますが、私はエラーに直面しています。驚くべきことに、コンソールに表示されるエラーログはごくわずかです。誰かが私が間違っているところを私に見せることができれば、私は感謝するでしょう。私はここにそれを掲示する前にそれを解決しようと多くの時間を費やしてきました。 以下は私のコードです。基本的なhibernate 5プログラムを実行できません

hibernate.cfg.xmlの

<hibernate-configuration> 
    <session-factory> 
     <!-- Database connection settings --> 
     <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
     <property name="connection.url">jdbc:oracle:thin:@localhost:1521:xe;DB_CLOSE_DELAY=-1;MVCC=TRUE</property> 
     <property name="connection.username">hr</property> 
     <property name="connection.password">hr</property> 
     <!-- JDBC connection pool (use the built-in) --> 
     <property name="connection.pool_size">1</property> 
     <!-- SQL dialect --> 
     <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> 
     <!-- Disable the second-level cache --> 
     <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</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> 
     <mapping resource="org/hibernate/tutorial/hbm/Event.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

Event.hbm.xml

<hibernate-mapping package="org.hibernate.tutorial.hbm"> 
    <class name="Event" table="EVENTS"> 
     <id name="id" column="EVENT_ID"> 
      <generator class="increment"/> 
     </id> 
     <property name="date" type="timestamp" column="EVENT_DATE"/> 
     <property name="title"/> 
    </class> 
</hibernate-mapping> 

Testクラス:コンソールでNativeApiIllustrationTest

package org.hibernate.tutorial.hbm; 

import java.util.Date; 
import java.util.List; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.boot.MetadataSources; 
import org.hibernate.boot.registry.StandardServiceRegistry; 
import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 

import junit.framework.TestCase; 

public class NativeApiIllustrationTest extends TestCase { 
    private SessionFactory sessionFactory; 

    @Override 
    protected void setUp() throws Exception { 
     // A SessionFactory is set up once for an application! 
     final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() 
       .configure() // configures settings from hibernate.cfg.xml 
       .build(); 
     try { 
      sessionFactory = new MetadataSources(registry).buildMetadata().buildSessionFactory(); 
     } 
     catch (Exception e) { 
      // The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory 
      // so destroy it manually. 
      StandardServiceRegistryBuilder.destroy(registry); 
     } 
    } 

    @Override 
    protected void tearDown() throws Exception { 
     if (sessionFactory != null) { 
      sessionFactory.close(); 
     } 
    } 

    @SuppressWarnings("unchecked") 
    public void testBasicUsage() { 
     // create a couple of events... 
     Session session = sessionFactory.openSession(); 
     session.beginTransaction(); 
     session.save(new Event("Our very first event!", new Date())); 
     session.save(new Event("A follow up event", new Date())); 
     session.getTransaction().commit(); 
     session.close(); 

     // now lets pull events from the database and list them 
     session = sessionFactory.openSession(); 
     session.beginTransaction(); 
     List result = session.createQuery("from Event").list(); 
     for (Event event : (List<Event>) result) { 
      System.out.println("Event (" + event.getDate() + ") : " + event.getTitle()); 
     } 
     session.getTransaction().commit(); 
     session.close(); 
    } 
} 

ログ:

Jun 13, 2017 6:54:51 AM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {5.2.10.Final} 
Jun 13, 2017 6:54:51 AM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000206: hibernate.properties not found 
Jun 13, 2017 6:54:51 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final} 
Jun 13, 2017 6:54:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure 
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!) 
Jun 13, 2017 6:54:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001005: using driver [oracle.jdbc.driver.OracleDriver] at URL [jdbc:oracle:thin:@localhost:1521:xe;DB_CLOSE_DELAY=-1;MVCC=TRUE] 
Jun 13, 2017 6:54:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001001: Connection properties: {user=fod, password=****} 
Jun 13, 2017 6:54:52 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator 
INFO: HHH10001003: Autocommit mode: false 
Jun 13, 2017 6:54:52 AM org.hibernate.engine.jdbc.connections.internal.PooledConnections <init> 
INFO: HHH000115: Hibernate connection pool size: 1 (min=1) 
Jun 13, 2017 6:54:52 AM org.hibernate.service.internal.AbstractServiceRegistryImpl stopService 
INFO: HHH000369: Error stopping service [class org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl] : java.lang.NullPointerException 

ヌルポインタが次の行に来ています。Session session = sessionFactory.openSession(); sessionFactoryがnullであることを示します。

以下は、私が は私がJars added in the class path

+1

[この]で答え(https://stackoverflow.com/questions/18736594/locati on-of-of-of-hibernate-cfg-xml-in-project)の質問が役立つかもしれません。アプリケーションの設定方法が古くなっているので新しい方法を学ぶことをお勧めします:-) – ujulu

答えて

0

私はhibernate.cfg.xmlのにはいくつかの変更を加えて、それはworking.The XMLを変更し始めたクラスパスに追加したjarファイルを以下のようにされている。

<hibernate-configuration> 
    <session-factory> 
     <!-- Database connection settings --> 
     <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
     <property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property> 
     <property name="connection.username">hr</property> 
     <property name="connection.password">hr</property> 
     <!-- JDBC connection pool (use the built-in) --> 
     <property name="connection.pool_size">1</property> 
     <!-- SQL dialect --> 
     <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property> 
     <!-- Disable the second-level cache --> 
     <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</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>  
     <mapping resource="org/hibernate/tutorial/hbm/Event.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 
私はこのXMLで行わ

変更は、接続URLを変更している。

<property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property> 
関連する問題