Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未能创建sessionFactory对象。java.lang.NullPointerException_Java_Hibernate_Orm - Fatal编程技术网

未能创建sessionFactory对象。java.lang.NullPointerException

未能创建sessionFactory对象。java.lang.NullPointerException,java,hibernate,orm,Java,Hibernate,Orm,我正在写申请书。此应用程序使用hibernate访问数据库。转到代码: 我有以下的守则: package logic; import org.hibernate.Session; public class Main { public static void main(String[] args){ Prepod prepod = new Prepod(); Student student = new Student(); prepod.

我正在写申请书。此应用程序使用hibernate访问数据库。转到代码: 我有以下的守则:

package logic;

import org.hibernate.Session;

public class Main {
    public static void main(String[] args){
        Prepod prepod = new Prepod();
        Student student = new Student();
        prepod.getStudents().add(student);
        student.getPrepods().add(prepod);

        Session session = HibernateUtil.getSessionFactory().openSession();//exception inside
        session.beginTransaction();
        session.update(student);
        session.getTransaction().commit();


    }
}
HibernateUtil:

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            Configuration configuration = new Configuration();
            configuration.configure();
            ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(
                    configuration.getProperties()).buildServiceRegistry();
            SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
            return sessionFactory;
        } catch (Throwable ex) {
            System.err.println("Failed to create sessionFactory object." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void shutdown() {
        // Close caches and connection pools
        getSessionFactory().close();
    }

}
调用main类时,我看到了以下stacktrace:

Failed to create sessionFactory object.java.lang.NullPointerException
Exception in thread "main" java.lang.ExceptionInInitializerError
    at logic.HibernateUtil.buildSessionFactory(HibernateUtil.java:22)
    at logic.HibernateUtil.<clinit>(HibernateUtil.java:10)
    at logic.Main.main(Main.java:12)
Caused by: java.lang.NullPointerException
    at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:214)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl$ConnectionProviderJdbcConnectionAccess.obtainConnection(JdbcServicesImpl.java:242)
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:117)
    at org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:78)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2293)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2289)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1758)
    at logic.HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
    ... 2 more
未能创建sessionFactory object.java.lang.NullPointerException
线程“main”java.lang.ExceptionInInitializeError中出现异常
位于logic.HibernateUtil.buildSessionFactory(HibernateUtil.java:22)
位于logic.HibernateUtil.(HibernateUtil.java:10)
at logic.Main.Main(Main.java:12)
原因:java.lang.NullPointerException
位于org.hibernate.service.jdbc.connections.internal.DriverManager连接ProviderImpl.getConnection(DriverManager连接ProviderImpl.java:214)
位于org.hibernate.engine.jdbc.internal.jdbcservicesiml$ConnectionProviderJdbcConnectionAccess.obtainConnection(jdbcservicesiml.java:242)
位于org.hibernate.engine.jdbc.internal.jdbcservicesiml.configure(jdbcservicesiml.java:117)
位于org.hibernate.service.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:75)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:159)
位于org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:131)
在org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:78)上
位于org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2293)
位于org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2289)
位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1758)
位于logic.HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
... 还有两个
谁知道问题的原因

更新

hibernate.cfg.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>
       <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <property name="hibernate.connection.url">"jdbc:sqlserver://10.16.9.52:1433;databaseName=ForHiberTest;"</property>
        <property name="hibernate.connection.username">userNew</property>
        <property name="hibernate.connection.password">Pass12345</property>
        <property name="show_sql">true</property>

        <property name="hibernate.hbm2ddl.auto">update</property>

        <mapping class="logic.Prepod"></mapping>
        <mapping class="logic.Student"></mapping>
    </session-factory>
</hibernate-configuration>

com.microsoft.sqlserver.jdbc.SQLServerDriver
org.hibernate.cache.NoCacheProvider
“jdbc:sqlserver://10.16.9.52:1433;databaseName=ForHiberTest;”
用户新
密码12345
真的
更新

您缺少hibernate.cfg.xml文件中的方言属性

<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
org.hibernate.dialogue.sqlserverdialogue

和应用程序会看到此文件,因为如果我替换它,我会看到另一个例外,即您缺少方言属性。请同时提供方言,并告诉您的hibernate.cfg.xml文件的位置。我想我现在可以将其作为正确答案