【问题标题】:Could not locate cfg.xml resource with hibernate.5.2.2.Final + spring.4.0.6.RELEASE in IDEA 2018.1在 IDEA 2018.1 中找不到带有 hibernate.5.2.2.Final + spring.4.0.6.RELEASE 的 cfg.xml 资源
【发布时间】:2020-07-29 19:23:53
【问题描述】:

我将我的想法从 2017.1 升级到 2018.1 并且我有一个无法解决的休眠问题...我已经搜索过,似乎有很多问题,但无法弄清楚是什么解决方案。

所以,我使用的是 hibernate.version 5.2.2.Final,spring.version 4.0.6.RELEASE,我的 hibernate.cfg.xmlsrc\main\resources 文件夹中,在我的 HibernateUtils 中我有这样的东西:

public class HibernateUtils {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            // Create the ServiceRegistry from hibernate.cfg.xml
            ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
                    .configure("hibernate.cfg.xml").build();

            // Create a metadata sources using the specified service registry.
            Metadata metadata = new MetadataSources(serviceRegistry).getMetadataBuilder().build();

            return metadata.getSessionFactoryBuilder().build();
        } 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();
    }

}

这一直有效,直到我升级了我的 IDEA。现在我有一些

Caused by: java.lang.ExceptionInInitializerError
    at org.mgo.HibernateUtils.buildSessionFactory(HibernateUtils.java:34)
    at org.mgo.HibernateUtils.getSessionFactory(HibernateUtils.java:11)
Caused by: org.hibernate.internal.util.config.ConfigurationException: Could not locate cfg.xml resource [/main/resources/hibernate.cfg.xml]

我尝试了所有发现此错误的方法,将 hibernate.cfg.xml 直接放入 src 文件夹,将路径指向 xml 文件,如 "/resources/hibernate.cfg.xml""/main/resources/hibernate.cfg.xml",或者像这样将其留空 .configure()但似乎没有任何效果。

我在这里找到:https://github.com/spring-projects/spring-framework/issues/21340 它不适用于Spring 4.3.17.RELEASE + Hibernate 5.2.17.Final 并且适用于Spring 5.0.6.RELEASE + Hibernate 5.1.14.Final 但如果我这样更改我会遇到许多其他错误,我不明白为什么我的hibernate.5.2.2.Final + spring.4.0.6由于我的想法,.RELEASE 不再有效。当我使用 Maven 时,我尝试在 Idea 之外进行编译,但遇到了同样的错误......

【问题讨论】:

    标签: spring hibernate intellij-idea hibernate.cfg.xml


    【解决方案1】:

    嗯,也许这会对某人有所帮助...我在没有 hibernate.cfg.xml 的情况下做到了,就像这样:https://dzone.com/articles/hibernate-5-java-configuration-example

    public class HibernateUtils {
    
        private static SessionFactory sessionFactory;
    
        public static SessionFactory getSessionFactory() {
    
            if (null == sessionFactory) {
                try {
                    Configuration configuration = new Configuration();
    
                    // Hibernate settings equivalent to hibernate.cfg.xml's properties
                    Properties settings = new Properties();
    
                    settings.put(Environment.DRIVER, "com.microsoft.sqlserver.jdbc.SQLServerDriver");
                    settings.put(Environment.URL, "jdbc:sqlserver://localhost;databaseName=DBA;instance=SQLEXPRESS");
                    settings.put(Environment.USER, "user");
                    settings.put(Environment.PASS, "xxx");
                    settings.put(Environment.DIALECT, "org.hibernate.dialect.SQLServerDialect");
                    settings.put(Environment.SHOW_SQL, "true");
                    settings.put(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
    
                    configuration.setProperties(settings);
    
                    configuration.addAnnotatedClass(MyClass1.class);
                    configuration.addAnnotatedClass(MyClass2.class);
    
                    ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
                            .applySettings(configuration.getProperties()).build();
    
                    sessionFactory = configuration.buildSessionFactory(serviceRegistry);
    
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return sessionFactory;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 1970-01-01
      相关资源
      最近更新 更多