Hibernate - MappingNotFoundException, ale dlaczego?

Odpowiedz Nowy wątek
2014-09-17 17:51

Rejestracja: 5 lat temu

Ostatnio: 5 lat temu

Lokalizacja: Warszawa

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?

edytowany 1x, ostatnio: ITomek, 2014-09-17 18:08

Pozostało 580 znaków

2014-09-17 22:45

Rejestracja: 6 lat temu

Ostatnio: 3 lata temu

0

Może spróbuj wrzucić do katalogu src

Pozostało 580 znaków

2014-09-18 08:20

Rejestracja: 5 lat temu

Ostatnio: 2 godziny temu

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

Pozostało 580 znaków

2014-09-18 11:56

Rejestracja: 5 lat temu

Ostatnio: 5 lat temu

Lokalizacja: Warszawa

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".

Pozostało 580 znaków

Odpowiedz

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