sql >> Databáze >  >> RDS >> Mysql

Hibernate 5 :- org.hibernate.MappingException:Neznámá entita

Opravil jsem stejný problém s Hibernate 5. V tomto kódu je problém

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

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

SessionFactory sf = configuration.buildSessionFactory(sr);

Tento kód funguje dobře pro Hibernate 4.3.5, ale stejný kód má stejný problém pro Hibernate 5.

Když provedete configuration.buildSessionFactory(sr) , pomocí Hibernate 5, Configuration ztratí všechny informace o mapování, které získá voláním configuration.configure() .

Řešení

Chcete-li problém vyřešit, použijte standardní konfigurační soubory hibernate.cfg.xml a hibernate.properties , můžete tímto způsobem vytvořit továrnu relace (bez ServiceRegistry )

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

Načítání vlastností

Pokud máte v souboru jiné vlastnosti než hibernate.properties , můžete sestavit továrnu relací pomocí StandardServiceRegistryBuilder (v každém případě, pokud máte hibernate.properties a další soubor, budou načteny oba)

Chcete-li načíst vlastnosti jako zdroj

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

Musíte mít hibernate-h2.properties v cestě třídy (kořen složky zdrojů, složka zdrojů). Můžete také zadat cestu z kořenové zdrojové složky/com/github/xxx/model/hibernate-h2.properties .

Chcete-li načíst vlastnosti z cesty v systému souborů

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

Příklad konzolové aplikace využívající tento přístup naleznete zde fluent-hibernate-mysql . K sestavení továrny relací z knihovny fluent-hibernate používá třídu utility. .

Nesprávný výukový program Hibernate 5

Ve výukovém programu Hibernate 5 je nesprávný příklad 1.1.6. Spuštění a pomocníci . Používá tento kód

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

Neprovádí správnou konfiguraci.



  1. Jaký je nejlepší způsob předání parametrů SQLCommand?

  2. Jak změnit sloupec a změnit výchozí hodnotu?

  3. Jak mohu naklonovat databázi SQL Server na stejném serveru v SQL Server 2008 Express?

  4. Rozdílné CURRENT_TIMESTAMP a SYSDATE v oracle