Hibernate - MappingNotFoundException, ale dlaczego?

0

Witam wszystkich serdecznie,

Chciałem napisać sobie najprostszą możliwą aplikację, która wykorzystuje Hibernate do zarządzania bazą danych MySQL. Docelowo ma być to aplikacja webowa, jednak na razie zrobiłem po prostu klasę z mainem, którą wywołuję jako Java Application do przetestowania samego działania Hibernate. W moim projekcie znajduje się wspomniana klasa (Welcome), POJO - User, plik hibernate.cfg.xml i plik o nazwie User.hbm.xml mapujący klasę User do tabeli User w bazie danych. Do zarządzania projektem używam Mavena.

Problem polega jednak na tym, że niezależnie od tego czy plik mapujący dodaję w pliku konfiguracyjnym Hibernate, czy dynamicznie po utworzeniu obiektu klasy Configuration, dostaję

MappingNotFoundException: resource: User.hbm.xml not found
.

Statycznie w hibernate.cfg.xml:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="hibernate.dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		<property name="hibernate.connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		<!-- Assume test is the database name -->
		<property name="hibernate.connection.url">
			jdbc:mysql://localhost:3306/hibernate
		</property>
		<property name="hibernate.connection.username">
			root
		</property>
		<property name="hibernate.connection.password">
			pass
		</property>
		
		<!-- List of XML mapping files -->
		<mapping resource="User.hbm.xml" />
	</session-factory>
</hibernate-configuration>

Dynamicznie w pliku Welcome.java:

try{
    	  Configuration configuration = new Configuration();
    	  configuration.configure("/persistence/hibernate.cfg.xml");
    	  // configuration.addResource("/persistence/User.hbm.xml");
    	  serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
    	  factory = configuration.buildSessionFactory(serviceRegistry);
      }catch (Throwable ex) { 
         System.err.println("Failed to create sessionFactory object." + ex);
         throw new ExceptionInInitializerError(ex); 
      }

Wydaje mi się to dziwne, bo plik konfiguracyjny Hibernate jest znajdowany bez problemu, a plik mapujący już nie. Oba znajdują się w tym samym katalogu persistence. Czytałem wiele wątków w Internecie i nie udało mi się znaleźć rozwiązania tego problemu. Zastanawiałem się czy nie jest to kwestią uprawnień (pracuję na Ubuntu), ale testowałem na Windowsie i jest to samo.

Co robię źle?

0

Może spróbuj wrzucić do katalogu src

1
<mapping resource="persistence/User.hbm.xml" />
0

@Szczery, dałbym sobie rękę uciąć, że już tego próbowałem, bo to przecież jedno z bardziej oczywistych rozwiązań, ale widocznie nie, bo nic mi nie działało, a teraz działa! :D Dzięki!

@MoorfoxD, tak by pewnie zadziałało, ale staram się trzymać konwencji, w której pliki nie javowe trzymam w "resources".

1 użytkowników online, w tym zalogowanych: 0, gości: 1