ホームページ  >  記事  >  Java  >  Hibernate 5.0 と MySQL の統合で「org.hibernate.MappingException: 不明なエンティティ」エラーが発生するのはなぜですか?

Hibernate 5.0 と MySQL の統合で「org.hibernate.MappingException: 不明なエンティティ」エラーが発生するのはなぜですか?

DDD
DDDオリジナル
2024-11-01 21:13:02489ブラウズ

Why am I getting

Hibernate 5: Hibernate-MySQL 統合で「org.hibernate.MappingException: 不明なエンティティ」が発生しました

Hibernate 5.0 を MySQL と統合しようとしたときMySQL データベースの場合、ユーザーに「org.hibernate.MappingException: 不明なエンティティ」というエラー メッセージが表示される場合があります。この問題は主に Hibernate バージョン 5.0.0 と 5.0.1 に影響しますが、4.3.9 などの以前のバージョンは正しく機能します。

この問題に対処するには、Hibernate 5 で導入された変更を理解することが重要です。バージョン 4 では以前は、Hibernate は StandardServiceRegistryBuilder に大きく依存していました。ただし、Hibernate 5 では、設定が変更されています。

間違った設定方法:

次のコードは、Hibernate 4.3.5 では機能しますが、Hibernate では失敗します。

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

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

SessionFactory sf = configuration.buildSessionFactory(sr);

Hibernate 5 では、このメソッドにより、configuration.buildSessionFactory(sr) 中にエンティティ マッピングに関する情報が失われます。

解決策:

この問題には 2 つの解決策が考えられます。

1.標準設定ファイル (hibernate.cfg.xml および hibernate.properties):

標準設定ファイルの場合、次の簡単なアプローチを使用してセッション ファクトリを作成します:

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

2.外部ソースからプロパティをロードする:

hibernate.properties 以外の場所にプロパティが保存されている場合は、次の手順に従います:

  • リソースとしてプロパティをロードする:
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties("hibernate-h2.properties").build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);  
  • ファイル システムの特定のパスからプロパティをロードします:
File propertiesPath = new File("some_path");
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().
    configure().loadProperties(propertiesPath).build();
SessionFactory sf = new Configuration().buildSessionFactory(serviceRegistry);

重要ですHibernate 5 チュートリアル (1.1.6. スタートアップとヘルパー) で提供されている例は間違っており、適切な構成が実行されないことに注意してください。正しい方法は上記に記載されています。

これらのソリューションを実装することで、ユーザーは Hibernate 5 を MySQL と効果的に統合し、「不明なエンティティ」エラーを解決できます。

以上がHibernate 5.0 と MySQL の統合で「org.hibernate.MappingException: 不明なエンティティ」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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