Спящий режим 4.3.5 не работает с базой данных Oracle10g

#java #mysql #oracle #hibernate

#java #mysql #Oracle #гибернация

Вопрос:

Я пробую Hibernate 4.3.5 с базой данных Oracle. Но во время запуска я получаю следующую проблему (тот же код отлично работает с базой данных MySQL).

 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Jun 26, 2014 10:35:46 AM org.hibernate.engine.jdbc.internal.JdbcServicesImpl configure
WARN: HHH000341: Could not obtain connection metadata : Unsupported feature
Jun 26, 2014 10:35:46 AM org.hibernate.engine.jdbc.internal.LobCreatorBuilder useContextualLobCreation
INFO: HHH000422: Disabling contextual LOB creation as connection was null
Exception in thread "main" java.lang.NullPointerException
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:244)
at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
at com.cluster.HibernateMain.main(HibernateMain.java:29)
 

Мой код

hibernate.cfg.xml

    <hibernate-configuration>
    <session-factory>
    <!-- Database connection properties - Driver, URL, user, password -->
        <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:xe</property>
        <property name="hibernate.connection.username">hr</property>
        <property name="hibernate.connection.password">hr</property>
        <property name="hibernate.hbm2ddl">create</property>


        <!-- org.hibernate.HibernateException: No CurrentSessionContext configured! -->
        <property name="hibernate.current_session_context_class">thread</property>

        <!-- Outputs the SQL queries, should be disabled in Production -->
        <property name="hibernate.show_sql">true</property>

        <!-- Dialect is required to let Hibernate know the Database Type, MySQL, Oracle etc
            Hibernate 4 automatically figure out Dialect from Database Connection Metadata -->
        <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> 

        <!-- mapping file, we can use Bean annotations too -->
        <mapping resource="comclusteremployee.hbm.xml" />
    </session-factory>
</hibernate-configuration>
 

employee.hbm.xml

 <hibernate-mapping>
    <class name="com.cluster.Employee" table="EMPLOYEE">
        <id name="id" type="int">
            <column name="ID" />
            <generator class="increment" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <property name="role" type="java.lang.String">
            <column name="ROLE" />
        </property>
        <property name="insertTime" type="timestamp">
            <column name="insert_time" />
        </property>
    </class>
</hibernate-mapping>
 

И клиентский код

 public class HibernateMain {

    public static void main(String[] args) {
        Employee emp = new Employee();
        emp.setName("Amr");
        emp.setRole("President");
        emp.setInsertTime(new Date());



     // Create the SessionFactory from hibernate.cfg.xml
        Configuration configuration = new Configuration();
        configuration.configure();
        System.out.println("Hibernate Configuration loaded");

        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        System.out.println("Hibernate serviceRegistry created");

        SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

        //Get Session
        Session session = sessionFactory.getCurrentSession();


        //start transaction
        session.beginTransaction();
        //Save the Model object
        session.save(emp);
        //Commit transaction
        session.getTransaction().commit();
        System.out.println("Employee ID=" emp.getId());

        //terminate session factory, otherwise program won't end
        sessionFactory.close();
    }

}
 

Я использую Jars
введите описание изображения здесь

Чего мне не хватает? Заранее спасибо.

Ответ №1:

Я решил проблему, удалив ojdbc14.jar и добавление ojdbc6.jar . Поскольку в Hibernate 4 используется реализация JDBC4.0, которой нет в ojdbc14.jar но эта реализация присутствует в ojdbc6.jar .