sql >> Databasteknik >  >> RDS >> Mysql

Hibernate 5 :- org.hibernate.MappingException:Okänd enhet

Jag har åtgärdat samma problem med Hibernate 5. Det finns ett problem i den här koden

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

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

SessionFactory sf = configuration.buildSessionFactory(sr);

Den här koden fungerar bra för Hibernate 4.3.5, men samma kod har samma problem för Hibernate 5.

När du gör configuration.buildSessionFactory(sr) , med Hibernate 5, Configuration förlorar all information om mappning som får genom att anropa configuration.configure() .

Lösning

För att åtgärda problemet, om du använder standardkonfigurationsfiler hibernate.cfg.xml och hibernate.properties , kan du skapa sessionsfabriken på detta sätt (utan ServiceRegistry )

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

Laddar egenskaper

Om du har andra egenskaper i en fil än hibernate.properties , kan du bygga sessionsfabrik med StandardServiceRegistryBuilder (i alla fall, om du har hibernate.properties och annan fil, den kommer att laddas båda)

För att ladda egenskaper som en resurs

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

Du måste ha hibernate-h2.properties i klasssökvägen (roten av källmappen, resursmappen). Du kan också ange en sökväg från rotkällmappen/com/github/xxx/model/hibernate-h2.properties .

För att ladda egenskaper från en sökväg i filsystemet

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

Du kan hitta ett exempel på en konsolapplikation som använder detta tillvägagångssätt här fluent-hibernate-mysql . Den använder en verktygsklass för att bygga sessionsfabriken från fluent-hibernate-biblioteket .

Felaktig självstudiekurs för Hibernate 5

Det finns ett felaktigt exempel i Hibernate 5 tutorial 1.1.6. Startup och hjälpare . Den använder den här koden

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

Den gör inte en korrekt konfiguration.



  1. Hur man bulkinfogar bara nya rader i PostreSQL

  2. PRAGMA table_list i SQLite

  3. SQL Server FOR XML Path gör repeterande noder

  4. Felaktigt heltal (2147483647) har infogats i MySQL?