Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Hibernate 5:- org.hibernate.MappingException:Nieznana jednostka

Naprawiłem ten sam problem w Hibernate 5. Wystąpił problem w tym kodzie

Configuration configuration = new Configuration();
configuration.configure();

ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(
    configuration.getProperties()).build();

SessionFactory sf = configuration.buildSessionFactory(sr);

Ten kod działa dobrze dla Hibernate 4.3.5, ale ten sam kod ma ten sam problem dla Hibernate 5.

Kiedy robisz configuration.buildSessionFactory(sr) , używając Hibernate 5, Configuration traci wszystkie informacje o mapowaniu, które są pobierane przez wywołanie configuration.configure() .

Rozwiązanie

Aby rozwiązać ten problem, jeśli używasz standardowych plików konfiguracyjnych hibernate.cfg.xml i hibernate.properties , możesz w ten sposób stworzyć fabrykę sesji (bez ServiceRegistry )

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

Wczytywanie właściwości

Jeśli masz właściwości w pliku innym niż hibernate.properties , możesz zbudować fabrykę sesji za pomocą StandardServiceRegistryBuilder (w każdym razie, jeśli masz hibernate.properties i inny plik, zostanie załadowany oba)

Aby załadować właściwości jako zasób

ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);  

Musisz mieć hibernate-h2.properties w ścieżce klasy (główny folder źródeł, folder zasobów). Możesz również określić ścieżkę z głównego folderu źródłowego/com/github/xxx/model/hibernate-h2.properties .

Aby załadować właściwości ze ścieżki w systemie plików

File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);

Przykładową aplikację konsolową korzystającą z tego podejścia znajdziesz tutaj fluent-hibernate-mysql . Używa klasy narzędziowej do zbudowania fabryki sesji z biblioteki fluent-hibernate .

Niepoprawny samouczek Hibernacji 5

W samouczku Hibernate 5 znajduje się niepoprawny przykład 1.1.6. Uruchomienie i pomocnicy . Używa tego kodu

 return new Configuration().configure().buildSessionFactory(
                new StandardServiceRegistryBuilder().build() );

Nie wykonuje prawidłowej konfiguracji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz kolumny w różnych bazach danych

  2. Oracle Database Link — odpowiednik MySQL?

  3. Jak przechowywać zdjęcia w bazie danych MySQL

  4. Wdróż bazę danych MySQL w chmurze hybrydowej za pomocą ClusterControl

  5. Grupuj według klauzuli w mySQL i postgreSQL, skąd błąd w postgreSQL?