Hibernate 5.0 を MySQL と統合する場合、開発者はエラー メッセージ「org.hibernate.MappingException: Unknown Entity」が表示される場合があります。 MappingException: 不明なエンティティ。」この問題は Hibernate 5.0.0 および 5.0.1 で発生しますが、Hibernate 4.3.9 では発生しません。
このエラーを解決するには、発生理由を理解することが重要です。 Hibernate 5 では、以前のバージョンとは異なり、デフォルトの設定プロセスではエンティティ マッピングが自動的にロードされません。これは、configuration.buildSessionFactory(sr) が呼び出されるときに、マッピングされたエンティティに関する情報が不足していることを意味します。
間違った Hibernate 5 チュートリアル:
Hibernate 5 チュートリアルでは、間違った内容が提供されています。このエラーを引き起こすコード サンプル:
return new Configuration().configure().buildSessionFactory( new StandardServiceRegistryBuilder().build() );
このコードはエンティティ マッピングを適切に構成していません。
問題を解決するには、次のいずれかの方法を使用してエンティティ マッピングを正しくロードできます:
標準設定ファイル: 標準設定ファイル hibernate.cfg.xml がある場合は、簡略化されたアプローチを使用します。および hibernate.properties:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
プロパティのロード: 他のプロパティ ファイルの場合は、StandardServiceRegistryBuilder を使用してプロパティをロードします:
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .configure().loadProperties("hibernate-h2.properties").build(); SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
これには、hibernate-h2.properties ファイルがクラスパスにある必要があります。
パスからプロパティをロード: 特定のファイル パスからプロパティをロードするには、このメソッドを使用します。
File propertiesPath = new File("some_path"); ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .configure().loadProperties(propertiesPath).build(); SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);
これらのソリューションのいずれかを使用してエンティティ マッピングをロードすると、Hibernate 5.0 を MySQL と統合する際の「不明なエンティティ」エラーを解決できます。 Hibernate 5 チュートリアルの間違ったコード サンプルは避けるべきであることに注意してください。
以上がMySQL を使用した Hibernate 5 で「org.hibernate.MappingException: Unknown Entity」が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。