为什么Hibernate找不到/hibernate.cfg.xml?

时间:2015-07-25 00:46:59

标签: hibernate postgresql maven classpath hibernate.cfg.xml

我正在尝试学习Hibernate + Maven。我正在尝试连接到PostgreSQL数据库,但是我收到以下错误:

  

初始SessionFactory创建failed.org.hibernate.HibernateException:找不到hibernate.cfg.xml

hibernate.cfg.xml文件已在src/main/resources文件夹下,我已将该文件夹添加为源文件夹。

以下是会话工厂初始化的代码:

Configuration  configuration = new Configuration().configure("hibernate.cfg.xml");
        return  configuration.buildSessionFactory();

编辑:这是pom.xml

    <modelVersion>4.0.0</modelVersion>

  <groupId>com.jee.mavenapp</groupId>
  <artifactId>hibernate-example</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>hibernate-example</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.10.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.common</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>4.0.5.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.12</version>
    </dependency>
  </dependencies>

2 个答案:

答案 0 :(得分:0)

在xml文件前添加正斜杠。

Configuration  configuration = new Configuration().configure("/hibernate.cfg.xml");

您也可以省略参数,因为那是default parameter,例如

Configuration configuration = new Configuration().configure();

您需要执行此操作才能加载classpath上的文件。

答案 1 :(得分:0)

这不是问题的解决方法,但是您可以将hibernate.cfg.xml文件放在与构建会话工厂的Java类相同的包中(以确保它在您的类路径中)。并做这样的事情

Configuration  configuration = new Configuration().configure("/com/github/fluent/hibernate/example/mysql/hibernate.cfg.xml");
return  configuration.buildSessionFactory();

替换&#34; / com / github / fluent / hibernate / example / mysql /&#34;与你的班级包。

P.S。你可以在这里找到一个非常简单的控制台Hibernate应用程序fluent-hibernate-mysql