2013-08-12 145 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" />