映射我的bean时Hibernate配置文件中的异常

时间:2015-06-25 16:15:39

标签: java xml hibernate maven hibernate-mapping

大家好,我不熟悉Hibernate。所以当我开始上课时。它在控制台中显示找不到我的配置文件xml的映射(resource:com.live.hibernate.User.hbm.xm)。我做了一个简单的例子:

User.java

package com.live.beans;

public class User {

    private int id;
    private String Name;
    private String email;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return Name;
    }

    public void setName(String name) {
        Name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public User(int id, String name, String email, String password) {
        super();
        this.id = id;
        Name = name;
        this.email = email;
        this.password = password;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", Name=" + Name + ", email=" + email
                + ", password=" + password + "]";
    }

}

User.hbm.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class>
        <id name="id"
            type="int" 
            column="id" 
            length="15"/>
        <property name="name" 
                  type="string"
                  column="name"
                  length="45"
        />
        <property name="email" 
                  type="string"
                  column="email"
                  length="45"
        />
        <property name="password" 
                  type="string"
                  column="password"
                  length="45"
        />
    </class>

</hibernate-mapping>

我为test创建了一个简单的java类(HibernateTest.java):

package com.live.presentation;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.live.beans.User;

public class HibernateTest {

    private Session session;

    private void openSession(){
        Configuration conf = new Configuration();
        SessionFactory sessionFactory= conf.configure().buildSessionFactory();
        Session session = sessionFactory.openSession();
        session.beginTransaction();
    }

    private void closeSession(){
        session.getTransaction().commit();
        session.close();
    }

    public HibernateTest() {
        openSession();
        User p = new User(1, "Ali", "ali@gmail.com", "password");
        session.save(p);
        System.out.println("sauvegarde reussi");
        closeSession();
    }

    public static void main(String[] args) {

        new HibernateTest();
    }

}

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>p01</groupId>
  <artifactId>p01</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <warSourceDirectory>WebContent</warSourceDirectory>
          <failOnMissingWebXml>false</failOnMissingWebXml>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <name>HibernateTest</name>
  <url>http://maven.apache.org</url>
  <dependencies>
          <dependency>
          <groupId>com.sun.faces</groupId>
          <artifactId>jsf-api</artifactId>
          <version>2.1.7</version>
        </dependency>
        <dependency>
          <groupId>com.sun.faces</groupId>
          <artifactId>jsf-impl</artifactId>
          <version>2.1.7</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>4.2.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.common</groupId>
            <artifactId>hibernate-commons-annotations</artifactId>
            <version>4.0.1.Final</version>
            <classifier>tests</classifier>
        </dependency>
        <dependency>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.0-api</artifactId>
            <version>1.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>4.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.0.0.GA</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.6.4</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <version>3.1.0.CR2</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.4</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.10</version>
        </dependency>


    </dependencies>
</project>

这是我的控制台:

log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" org.hibernate.MappingNotFoundException: resource: com.live.hibernate.User.hbm.xml not found
    at org.hibernate.cfg.Configuration.addResource(Configuration.java:724)
    at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2102)
    at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2074)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2054)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2007)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1922)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1901)
    at com.live.presentation.HibernateTest.openSession(HibernateTest.java:15)
    at com.live.presentation.HibernateTest.<init>(HibernateTest.java:26)
    at com.live.presentation.HibernateTest.main(HibernateTest.java:35)

被修改

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>

        <property name="hibernate.connection.url">jdbc:mysql://localhost/ment</property>

        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

        <property name="hibernate.connection.username">root</property>

        <property name="hibernate.connection.password"></property>

        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

        <property name="hibernate.show_sql">false</property>

        <mapping resource="com.live.hibernate.User.hbm.xml" />

    </session-factory>
</hibernate-configuration>

文件夹结构

src
 |-- com
 |-- live
 |    |-- hibernate
 |    |    `-- User.hbm.xml
     live
      |`--beans
      |    `-- User.java
     live
      `--presentation
         `-- HibernateTest.java
WebContent
 |-- META-INF
 |-- WEB-INF
 |         
 |-- index.xhtml
 pom.xml

其他 我说的是,当我调试时,我有一个例外:

SessionFactory sessionFactory= conf.configure().buildSessionFactory();

您知道不推荐使用buildSessionFactory()方法。有什么想法吗?

请有人帮助我!

1 个答案:

答案 0 :(得分:0)

您的hibernate.cfg.xml在哪里?

请务必将hibernate.cfg.xmlUser.hbm.xml放在相同的源文件夹中,并放在您放置的hibernate.cfg.xml内:

 <mapping resource="User.hbm.xml" />