Mysql
 sql >> база данни >  >> RDS >> Mysql

Хибернация 5 :- org.hibernate.MappingException:Неизвестен обект

Поправих същия проблем с Hibernate 5. Има проблем в този код

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

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

SessionFactory sf = configuration.buildSessionFactory(sr);

Този код работи добре за Hibernate 4.3.5, но същият код има същия проблем за Hibernate 5.

Когато направите configuration.buildSessionFactory(sr) , използвайки Hibernate 5, Configuration губи цялата информация за картографирането, която получава чрез извикване configuration.configure() .

Решение

За да отстраните проблема, ако използвате стандартни конфигурационни файлове hibernate.cfg.xml и hibernate.properties , можете да създадете фабриката за сесии по този начин (без ServiceRegistry )

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

Свойства се зареждат

Ако имате свойства във файл, различен от hibernate.properties , можете да изградите фабрика за сесии с помощта на StandardServiceRegistryBuilder (все пак, ако имате hibernate.properties и друг файл, той ще бъде зареден и двата)

За да заредите свойства като ресурс

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

Трябва да имате hibernate-h2.properties в пътя на класа (корен на папката с източници, папка с ресурси). Можете също да посочите път от основната изходна папка/com/github/xxx/model/hibernate-h2.properties .

За да заредите свойства от път във файловата система

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

Можете да намерите примерно конзолно приложение, използвайки този подход тук fluent-hibernate-mysql . Той използва помощен клас за изграждане на фабриката за сесии от библиотеката fluent-hibernate .

Неправилен урок за Hibernate 5

В урока за Hibernate 5 има неправилен пример 1.1.6. Стартиране и помощници . Той използва този код

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

Не прави правилна конфигурация.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешки в разрешенията на Mysql с „зареждане на данни“

  2. Как да изтеглите подправена парола от базата данни и потребителя за удостоверяване?

  3. INSERT INTO...SELECT за всички MySQL колони

  4. Използване на JDeveloper с MySQL база данни и Oracle Database на AWS RDS, част 2

  5. Как да премахнете водещите празни места в MySQL