ホームページ  >  記事  >  Java  >  MySQL を使用した Hibernate 5 で「org.hibernate.MappingException: Unknown Entity」が発生するのはなぜですか?

MySQL を使用した Hibernate 5 で「org.hibernate.MappingException: Unknown Entity」が発生するのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-29 16:35:021024ブラウズ

Why am I Getting

Hibernate 5: 「org.hibernate.MappingException: Unknown Entity」について

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() );

このコードはエンティティ マッピングを適切に構成していません。

解決策: エンティティ マッピングの読み込み

問題を解決するには、次のいずれかの方法を使用してエンティティ マッピングを正しくロードできます:

  1. 標準設定ファイル: 標準設定ファイル hibernate.cfg.xml がある場合は、簡略化されたアプローチを使用します。および hibernate.properties:

    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
  2. プロパティのロード: 他のプロパティ ファイルの場合は、StandardServiceRegistryBuilder を使用してプロパティをロードします:

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

    これには、hibernate-h2.properties ファイルがクラスパスにある必要があります。

  3. パスからプロパティをロード: 特定のファイル パスからプロパティをロードするには、このメソッドを使用します。

    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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。