sql >> Database teknologi >  >> RDS >> Mysql

Hibernate 5:- org.hibernate.MappingException:Ukendt enhed

Jeg har løst det samme problem med Hibernate 5. Der er et problem i denne kode

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

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

SessionFactory sf = configuration.buildSessionFactory(sr);

Denne kode fungerer fint til Hibernate 4.3.5, men den samme kode har det samme problem for Hibernate 5.

Når du gør configuration.buildSessionFactory(sr) , ved hjælp af Hibernate 5, Configuration mister al information om kortlægning, der hentes ved at kalde configuration.configure() .

Løsning

For at løse problemet, hvis du bruger standardkonfigurationsfiler hibernate.cfg.xml og hibernate.properties , kan du oprette sessionsfabrikken på denne måde (uden ServiceRegistry )

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

Indlæser egenskaber

Hvis du har andre egenskaber i en fil, så hibernate.properties , kan du bygge sessionsfabrikken ved hjælp af StandardServiceRegistryBuilder (ihvertfald, hvis du har hibernate.properties og anden fil, den indlæses begge)

At indlæse egenskaber som en ressource

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

Du skal have hibernate-h2.properties i klassestien (roden af ​​mappen kilder, mappen ressourcer). Du kan også angive en sti fra rodkildemappen/com/github/xxx/model/hibernate-h2.properties .

For at indlæse egenskaber fra en sti i filsystemet

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

Du kan finde et eksempel på en konsolapplikation, der bruger denne tilgang her fluent-hibernate-mysql . Den bruger en hjælpeklasse til at bygge sessionsfabrikken fra fluent-hibernate-biblioteket .

Forkert Hibernate 5-selvstudie

Der er et forkert eksempel i Hibernate 5 tutorial 1.1.6. Opstart og hjælpere . Den bruger denne kode

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

Den udfører ikke en korrekt konfiguration.



  1. Opdater erklæring ved hjælp af med klausul

  2. Sådan tilføjes fremmednøglebegrænsning til eksisterende tabel i SQL Server - SQL Server / TSQL vejledning del 68

  3. Hvordan bruger man skemaer i Django?

  4. Er der en måde at ikke bruge firkantede parenteser i SQL Server?