org.hibernate.HibernateException:从资源中找不到/hibernate.cfg.xml

时间:2016-07-28 07:29:12

标签: java eclipse hibernate

我有新的spring-boot项目。我使用gradle作为构建管理器和Eclpice IDE。我想使用hibernate并尝试从hibernate.cfg.xml文件获取配置,但得到

  

org.hibernate.HibernateException:找不到/hibernate.cfg.xml

我将此文件存储在资源文件夹中,我也尝试将其放入META-INF文件夹。

文件夹结构:

enter image description here

HibernateUtil.java:

public class HibernateUtil {

private static  SessionFactory sessionFactory = buildSessionFactory();


 private static SessionFactory buildSessionFactory()
   {
      try
      {
         if (sessionFactory == null)
         {
             sessionFactory = new Configuration().configure().buildSessionFactory();
         }
         return sessionFactory;
      } catch (Throwable ex)
      {
         System.err.println("Initial SessionFactory creation failed." + ex);
         throw new ExceptionInInitializerError(ex);
      }
 }

public static SessionFactory getSessionFactory() {
    return sessionFactory;
}

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

}

2 个答案:

答案 0 :(得分:0)

如果要读取资源目录中的文件,则需要使用classloder来获取文件。

静态方法

HibernateUtil.class.getClassLoader().getResource("hibernate.cfg.xml").getFile();

非静态方法

getClass().getClassLoader().getResource("hibernate.cfg.xml").getFile();

如果资源位于resources的任何子目录中,则在获取资源时为文件夹路径添加前缀

获取META-INF目录中的资源的示例

getResource("META-INF/hibernate.cfg.xml");

但是春季启动自动配置,只需在pom.xml中添加依赖项并在application.properties中提供JPA相关属性

答案 1 :(得分:0)

如果您的应用程序是Web服务,则应将hibernate.cfg.xml放在WEB-INF floder中。如果您的应用程序是客户端服务,则应将hibernate.cfg.xml放在src包中。