2013-08-12 54 views
3

从其官方文档启动Hibernate。我陷入了配置xml文件的最基本步骤。尽管我已经按照示例中所述完成了所有操作,但未能找到The mapping file休眠:映射未发现异常

这是例外:

Exception in thread "main" org.hibernate.MappingNotFoundException: resource: testing/ground/beans/User.hbm.xml not found 
    at org.hibernate.cfg.Configuration.addResource(Configuration.java:728) 
    at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2115) 
    at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2087) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2067) 
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2020) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1935) 
    at org.hibernate.cfg.Configuration.configure(Configuration.java:1914) 
    at testing.ground.test.HibernateTest.main(HibernateTest.java:14) 

与代码的main():

package testing.ground.test; 

import java.util.List; 

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

    public class HibernateTest { 
     private SessionFactory sessionFactory; 

     public static void main(String[] args) { 
      HibernateTest ht = new HibernateTest(); 
      ht.sessionFactory = new Configuration().configure().buildSessionFactory(); 
      ht.getData(); 
     } 

     public void getData(){ 
      Session session = this.sessionFactory.getCurrentSession(); 
      session.beginTransaction(); 
      List list = session.createQuery("from users").list(); 
      System.out.println(list); 
      session.getTransaction().commit(); 
      session.close(); 
     } 



    } 

Hibernate的配置文件:

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

<hibernate-configuration> 

    <session-factory> 

     <!-- Database connection settings --> 
     <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="connection.url">jdbc:mysql://localhost:3306/somedb?characterEncoding=UTF-8</property> 
     <property name="connection.username">username</property> 
     <property name="connection.password"/> 

     <!-- JDBC connection pool (use the built-in) --> 
     <property name="connection.pool_size">1</property> 

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

     <!-- Echo all executed SQL to stdout --> 
     <property name="show_sql">true</property> 

     <mapping resource="testing/ground/beans/User.hbm.xml"/> 

    </session-factory> 

</hibernate-configuration> 

我试图保持文件夹结构与Hiberante示例中的相同:

Screen for package structure

请指点。

回答

5

地方user.hbm.xml文件

3

User.hbm.xml移动到src/main/resources的正确包装(testing.ground.beans)。我猜你的编译工具未src/main/java

4

它看起来像你使用Maven构建项目挑资源。 Maven预计资源(即非Java文件)在src/main/resources之下。不可以src/main/java

这就是说,找到另一个教程,教导如何映射使用注释的实体。 XML映射已经过时,比注释更难使用。作为附加奖励,您还将学习如何使用EclipseLink和所有其他JPA引擎,因为注释是标准的,而XML映射不是。 testing.ground.beans包下的资源文件夹

1

您还可以使用 <mapping file="src/main/java/testing/ground/beans/User.hbm.xml" />