Hibernate 5: 「org.hibernate.MappingException: 不明なエンティティ」エラーの解決
はじめに
Hibernate 5.0 をMySQL では、開発者は「org.hibernate.MappingException: Unknownentity」という複雑なエラー メッセージに遭遇することがよくあります。この問題は、Hibernate 4.3.9 と 5.0.0 の間の設定の不一致に起因します。
根本原因
Hibernate 5 では、メソッドconfiguration.buildSessionFactory(sr)構成により、configuration.configure() によって構成されたエンティティ マッピングに関する情報が失われます。その結果、Hibernate は永続クラスを認識できません。
解決策
この問題を修正するには、セッション ファクトリの作成を担当するコードを変更します。
// Incorrect approach (for Hibernate 5) SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(sr); // Correct approach SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
追加オプション
1.プロパティの読み込み
プロパティがデフォルト以外の場所に保存されている場合は、StandardServiceRegistryBuilder を利用してプロパティを読み込みます。
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder() .configure() .loadProperties("hibernate-<database>.properties") .build(); SessionFactory sessionFactory = new Configuration().buildSessionFactory(serviceRegistry);
2. Hibernate 5 チュートリアルの修正
Hibernate 5 チュートリアルのセクション 1.1.6 に誤った例が含まれています:
// Incorrect code from tutorial return new Configuration().configure().buildSessionFactory( new StandardServiceRegistryBuilder().build() );
この誤ったコードを正しいアプローチに置き換えてください:
// Correct code return new Configuration().configure().buildSessionFactory();
以上がHibernate 5: 「org.hibernate.MappingException: 不明なエンティティ」エラーを修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。