java SpringBoot构建错误:“org.hibernate. Hibernate异常:从资源中找不到/hibernate. cfg. xml”

nc1teljy  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(158)

我有一个新的 SpringBoot 项目,我使用 gradle 作为构建管理器和 Eclipse IDE
我想使用 hibernatehibernate.cfg.xml文件中的配置,但我得到:

org.hibernate.HibernateException: /hibernate.cfg.xml not found

我把这个文件保存在resources文件夹中,我也试着把它放到META-INF文件夹中。
项目结构:

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();
}

}

flvlnr44

flvlnr441#

如果要读取resources目录中的文件,则需要使用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");

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

jecbmhm3

jecbmhm32#

如果你的应用程序是一个 * web服务 *,那么你应该把hibernate.cfg.xml放在WEB-INF文件夹中。
如果你的应用程序是 * 客户端服务 *,那么你应该把你的hibernate.cfg.xml放在src包中。

相关问题