【问题标题】:null pointer exception hibernate on creating sessionfactory创建会话工厂时空指针异常休眠
【发布时间】:2015-11-26 03:07:41
【问题描述】:

您好,我正在尝试编写我的第一个 Hibernate 程序, 它在实例化会话工厂时出错。 我正在使用休眠 5.0.4 & java 8 & eclipse Luna SR1 (4.4.1) & oracle 11g。

主类是:

public class MainMethod {
public static void main(String[] args) {
    SampleClass s = new SampleClass();
    s.setId(1);
    s.setValue("Value_1");

    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

    Session session = sessionFactory.openSession();
    session.beginTransaction();
    session.save(s);
    session.getTransaction().commit();      
}
}

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">oracle.jdbc.driver.OracleDriver</property>
  <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:mndb11g</property>
  <property name="hibernate.connection.username">temp_p</property>
  <property name="hibernate.connection.password">temp_p</property>
  <property name="connection.pool_size">1</property>

  <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
  <property name="hibernate.default_schema">temp_p</property>

  <property name="hbm2ddl.auto">create</property>
  <property name="show_sql">true</property>

  <mapping class="com.h.SampleClass.SampleClass"/>

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

它给出了一个例外

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

异常堆栈跟踪是

    Exception in thread "main" java.lang.NullPointerException
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader.getResources(ClassLoaderServiceImpl.java:173)
    at java.util.ServiceLoader$LazyIterator.hasNextService(ServiceLoader.java:348)
    at java.util.ServiceLoader$LazyIterator.hasNext(ServiceLoader.java:393)
    at java.util.ServiceLoader$1.hasNext(ServiceLoader.java:474)
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:324)
    at org.hibernate.integrator.internal.IntegratorServiceImpl.<init>(IntegratorServiceImpl.java:40)
    at org.hibernate.boot.registry.BootstrapServiceRegistryBuilder.build(BootstrapServiceRegistryBuilder.java:213)
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:119)
    at com.h.MainMethod.main(MainMethod.java:19)

任何人都可以帮助解决这个问题。 提前致谢。

【问题讨论】:

    标签: java spring oracle hibernate


    【解决方案1】:

    这可能由于多种原因而发生。

    • 可能找不到实体。在您的hibernate.cfg.xml 文件中,实体被称为com.h.SampleClass.SampleClass 请仔细检查类名和包名。

    • 确保将休眠库添加为用户库。不是系统库。 More info

    希望这会有所帮助。

    【讨论】:

    • 是的,我的包是 com.h.SampleClass,我的课程是 SampleClass。 & 但我已将它们添加为系统库.. 更改为用户库。工作完美。谢谢:)
    • 这对我有用。我创建了一个独立的 java 项目并尝试将 Hibernate 库作为用户库导入,但选中了“系统库”复选框。取消选中“系统库”复选框后错误消失
    【解决方案2】:

    当代码运行时,听起来 hibernate.cfg.xml 不在您的类路径中。如果您使用的是 maven,请将其放在 src/main/resources 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 2016-01-27
      • 2013-10-21
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多