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.