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.