18

休止状態の構成が正しく機能しているかどうかをテストしようとしました。試しましたが、エラーが発生しました:

INFO: HHH000206: hibernate.properties not found

これを行うには:私は作成します:

[1] hibernate 構成ファイル [xml を使用]

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory name="">
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost:3306</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.default_schema">explorecalifornia</property>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="hibernate.format_sql">true</property>
  <property name="hibernate.connection.password">abc123</property>
 </session-factory>
</hibernate-configuration>

[2] 休止状態のユーティリティ クラス

public class HibernateUtilities {

    private static SessionFactory sessionFactory;
    private static ServiceRegistry serviceRegistry;

    static{
        try{
            Configuration configuration = new Configuration().configure();

            serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
            sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        }

        catch(HibernateException exception){
            System.out.println("Problem creating session factory");
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void setSessionFactory(SessionFactory sessionFactory) {
        HibernateUtilities.sessionFactory = sessionFactory;
    }


}

[3] メインプログラム:

import org.hibernate.Session;

    public class Program {

        public static void main(String[] args) {
            System.out.println("Hibernate");

            Session session = HibernateUtilities.getSessionFactory().openSession();
            session.close();

        }

    }

しかし、プログラムを実行すると、次のことがわかりました。

Hibernate
Sep 29, 2013 10:47:15 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.2.Final}
Sep 29, 2013 10:47:15 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.2.5.Final}
Sep 29, 2013 10:47:15 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Sep 29, 2013 10:47:15 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Sep 29, 2013 10:47:15 PM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
Sep 29, 2013 10:47:15 PM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
Problem creating session factory
Exception in thread "main" java.lang.NullPointerException
    at com.simpleprogrammer.Program.main(Program.java:10)

これを解決するために、Google を試し、見つけた方法を適用しました。それでも問題を解決できませんでした。誰でも私を助けてもらえますか?

4

7 に答える 7

19

これは、ファイルがないことを知らせる INFO メッセージにすぎませんhibernate.properties。このプロパティ ファイルは必須ではないため、アプリケーションの動作を妨げるものではありません。

作成が失敗した原因を知りたい場合はSessionFactory、catch ブロックを次のように変更する必要があります。

catch(HibernateException exception){
     System.out.println("Problem creating session factory");
     exception.printStackTrace();
}

代わりにロギング フレームワークを使用する必要があります。

于 2016-02-23T15:00:01.000 に答える
5

あなたの問題は、クラスで発生するアプリケーションのセッションファクトリーの作成です。その理由は、構成を登録したため、休止状態の構成クラスで作成してセッションファクトリーをHibernateUtilities作成できないことが原因である可能性がありますsessionRegistryhibernate.cfg.xml

HibernateUtilities クラスの次のコードを置き換えるだけです

        `sessionFactory = configuration.buildSessionFactory(serviceRegistry);`

        `sessionFactory = configuration.buildSessionFactory();`
于 2013-09-30T04:02:22.457 に答える
0

いくつかの休止状態のライブラリが不足していると思います (おそらくhibernate-tools.jar私は推測します)。ので、ご確認ください。

とにかく、休止状態の注釈を使用しているのを見たので、このコードを試して、エラー プロパティが見つからない場合に何が起こるかを確認してください。

try {
        AnnotationConfiguration configuration = new AnnotationConfiguration();          
        sessionFactory = configuration.configure().buildSessionFactory();       
    }
于 2013-09-30T08:37:51.217 に答える