java - hibernate.cfg.xml 在项目中的位置?

标签 java hibernate orm

我创建了一个具有以下结构的项目:

enter image description here

HibernateUtil:

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            Configuration  configuration = new Configuration().configure( "C:\\Users\\Nikolay_Tkachev\\workspace\\hiberTest\\src\\logic\\hibernate.cfg.xml");
            return new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            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();
    }

}

一行

Configuration  configuration = new Configuration().configure( "C:\\Users\\Nikolay_Tkachev\\workspace\\hiberTest\\src\\logic\\hibernate.cfg.xml");

我有错误

Initial SessionFactory creation failed.org.hibernate.HibernateException: C:\Users\Nikolay_Tkachev\workspace\hiberTest\src\logic\hibernate.cfg.xml not found Exception in thread "main" java.lang.ExceptionInInitializerError at logic.HibernateUtil.buildSessionFactory(HibernateUtil.java:19) at logic.HibernateUtil.(HibernateUtil.java:9) at logic.Main.main(Main.java:12) Caused by: org.hibernate.HibernateException: C:\Users\Nikolay_Tkachev\workspace\hiberTest\src\logic\hibernate.cfg.xml not found at org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:173) at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:1947) at org.hibernate.cfg.Configuration.configure(Configuration.java:1928) at logic.HibernateUtil.buildSessionFactory(HibernateUtil.java:14) ... 2 more

错误的原因是什么,我该如何解决?

最佳答案

给出相对于你的项目的路径。

在您的 src 中创建一个名为 resources 的文件夹并将您的配置文件放在那里。

   configuration.configure("/resources/hibernate.cfg.xml");

如果你检查你的代码

Configuration  configuration = new Configuration().configure( "C:\\Users\\Nikolay_Tkachev\\workspace\\hiberTest\\src\\logic\\hibernate.cfg.xml");
return new Configuration().configure().buildSessionFactory();

在两行中,您将创建两个配置对象。

如果你写的话应该可以工作(尚未测试),

Configuration  configuration = new Configuration().configure( "C:\\Users\\Nikolay_Tkachev\\workspace\\hiberTest\\src\\logic\\hibernate.cfg.xml");
return  configuration.buildSessionFactory();

但是在服务器上部署后它会失败,因为您使用的是系统路径而不是项目相对路径。

关于java - hibernate.cfg.xml 在项目中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18736594/

相关文章:

java - 使用 Quarkus 和 Hibernate 通过 AttributeConverter 将 JSON 更改持久保存到数据库

java - 以多对一关系归档的版本导致对象引用未保存的 transient 实例

delphi - 关于在 Delphi 中分离数据访问、业务逻辑和 GUI 的任何建议

java - jasper grails 插件升级到 Java8 失败

java - 从小字符打印大字符

java - JPA/Hibernate - 默认数据

java - Hibernate:通过附加表实现多对多

java - 小写密码错误

java - 当在Java中使用StringBuilder时仍然创建String时,String builder如何创建可变对象?

java - Hibernate Criteria 按子记录数排序