sql >> データベース >  >> RDS >> Mysql

Hibernate 5:-org.hibernate.MappingException:不明なエンティティ

    Hibernate5で同じ問題を修正しました。このコードに問題があります

    Configuration configuration = new Configuration();
    configuration.configure();
    
    ServiceRegistry sr = new StandardServiceRegistryBuilder().applySettings(
        configuration.getProperties()).build();
    
    SessionFactory sf = configuration.buildSessionFactory(sr);
    

    このコードはHibernate4.3.5で正常に機能しますが、同じコードでもHibernate5でも同じ問題が発生します。

    configuration.buildSessionFactory(sr)を実行する場合 、Hibernate5を使用して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が必要です クラスパス(sourcesフォルダーのルート、resourcesフォルダー)。ルートソースフォルダーからのパスも指定できます/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ライブラリ からセッションファクトリを構築します。 。

    不正なHibernate5チュートリアル

    Hibernate5チュートリアルに誤った例があります1.1.6。スタートアップとヘルパー 。このコードを使用します

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

    適切な構成を行いません。



    1. データベース設計:1つの巨大なテーブルまたは個別のテーブル?

    2. desc操作で列のコメントを表示する方法

    3. SQLServerのロックを使用してトランザクションの同時実行性を管理する

    4. PHPPDO-行数