sql >> Database >  >> RDS >> Mysql

Hibernate 5:- org.hibernate.MappingException:onbekende entiteit

Ik heb hetzelfde probleem opgelost met Hibernate 5. Er is een probleem met deze code

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

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

SessionFactory sf = configuration.buildSessionFactory(sr);

Deze code werkt prima voor Hibernate 4.3.5, maar dezelfde code heeft hetzelfde probleem voor Hibernate 5.

Wanneer u configuration.buildSessionFactory(sr) . doet , met Hibernate 5, Configuration verliest alle informatie over mapping die wordt opgehaald door configuration.configure() .

Oplossing

Om het probleem op te lossen, gebruik je de standaard configuratiebestanden hibernate.cfg.xml en hibernate.properties , kunt u op deze manier de sessiefabriek maken (zonder ServiceRegistry )

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

Eigenschappen laden

Als je eigenschappen in een ander bestand hebt dan hibernate.properties , kunt u een sessiefabriek bouwen met StandardServiceRegistryBuilder (in ieder geval, als je hibernate.properties hebt en een ander bestand, het wordt beide geladen)

Eigenschappen laden als hulpbron

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

U moet hibernate-h2.properties . hebben in het klassenpad (hoofdmap van de bronnenmap, bronnenmap). U kunt ook een pad specificeren vanuit de rootbronmap/com/github/xxx/model/hibernate-h2.properties .

Eigenschappen laden vanaf een pad in het bestandssysteem

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

Een voorbeeld van een consoletoepassing die deze aanpak gebruikt, vindt u hier fluent-hibernate-mysql . Het gebruikt een utility class om de session factory te bouwen vanuit de vloeiend-hibernate bibliotheek .

Onjuiste slaapstand 5 tutorial

Er is een onjuist voorbeeld in Hibernate 5 tutorial 1.1.6. Opstarten en helpers . Het gebruikt deze code

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

Het doet geen goede configuratie.



  1. Disaster Recovery voor Galera-cluster geïmplementeerd in een hybride cloud

  2. BULK INSERT in MYSQL

  3. EXECUTE...USING statement in PL/pgSQL werkt niet met recordtype?

  4. Fout tijdens het verzenden van QUERY-pakket