2013-08-12 5 views
3

Начато спящий режим из его официальных документов. Я застрял на самом базовом этапе настройки 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) 

код с основной():

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> 

Я пытался сохранить структуру папок так же, как в примерах Гиберанте:

Screen for package structure

Прошу совета.

ответ

5

место user.hbm.xml файл в папке ресурсов под testing.ground.beans пакета

3

Переместить User.hbm.xml в надлежащую упаковку (testing.ground.beans) в src/main/resources. Я думаю, ваш инструмент построения не выбирает ресурсы из src/main/java

4

Похоже, вы используете Maven для создания своего проекта. Maven ожидает, что ресурсы (то есть файлы без Java) будут находиться под src/main/resources. Не указывается src/main/java.

Об этом говорится в другом учебнике, в котором рассказывается, как сопоставлять объекты с помощью аннотаций. Картирование XML устарело и гораздо сложнее в использовании, чем аннотации. В качестве дополнительного бонуса вы также узнаете, как использовать EclipseLink и все другие механизмы JPA, потому что аннотации являются стандартными, тогда как сопоставление XML не является.

1

Вы также можете использовать <mapping file="src/main/java/testing/ground/beans/User.hbm.xml" />