2011-09-19 7 views
8

私はこのように私HibernateUtilのを構築:休止状態:AnnotationConfigurationインスタンスを使用する必要があります...エラー

public class HibernateUtil { 

     private static final SessionFactory sessionFactory; 

     static { 
      try { 
       // Create the SessionFactory from standard (hibernate.cfg.xml) config file. 
       sessionFactory = new Configuration().configure().buildSessionFactory(); 

      } catch (Throwable ex) { 
       // Log the exception. 
       System.err.println("Initial SessionFactory creation failed." + ex); 
       throw new ExceptionInInitializerError(ex); 
      } 
     } 

     public static SessionFactory getSessionFactory() { 
      return sessionFactory; 
     } 
} 

だから私は(Hibernateツールで)EclipseのHQLエディタでHQLコマンドを実行しようとするとできます次のエラーが表示されます。 enter image description here なぜこのようなことが起こりますか?それはConfigureAnnotationによってAnnotationConfigurationを変更しませんか?事前に

UPDATE

<?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> 
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
     <property name="hibernate.connection.password"><password></property> 
     <property name="hibernate.connection.url">jdbc:mysql://<hostname>:3306/<schema></property> 
     <property name="hibernate.connection.username">root</property> 
     <!-- <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> --> 
     <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 

     <!-- SQL --> 
     <property name="hibernate.format_sql">true</property> 
     <property name="hibernate.show_sql">true</property> 
     <!-- C3P0 --> 
     <property name="hibernate.c3p0.acquire_increment">2</property> 
     <property name="hibernate.c3p0.max_size">20</property> 
     <property name="hibernate.c3p0.min_size">5</property> 
     <property name="hibernate.c3p0.timeout">180</property> 
     <property name="hibernate.c3p0.idle_test_period">100</property> 
     <!-- Classes --> 
     <mapping class="com.suaparte.pojo.Area" /> 
    </session-factory> 
</hibernate-configuration> 

感謝。

+0

クラスパスにすることができ、annotations.jarが休止状態含めますあなたはhibernate.cfg.xmlを貼り付けますか?あなたが好きなら、あなたはクラスを省略することができます。プロパティ。 – ssedano

+0

私の投稿Udoを更新します。 –

答えて

12

version> = 4.0の場合、おそらくHibernate Consoleの設定に問題があります。 >実行構成

と注釈にコアからメインタブ変化型で、作成した設定を開く -

ラン:

に行くようにしてください。ここではスクリーンショット: enter image description here

2

は以下のように構築するために試してみてください。

Hibernate annotations 

よろしく:

AnnotationConfiguration().configure().buildSessionFactory(); 

がそうするために、あなたはこれを必要とします。

Udo。

+0

私はすでにそのうごメモを試して、成功していません。 –

-1

SessionFactoryオブジェクトを返すユーティリティクラスを作成します。

public class HibernateUtil { 

    private static SessionFactory sessionFactory; 

    static { 
     try { 
      sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); 
     } 
     catch(Throwable t) { 
      throw new ExceptionInInitializerError(t); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 

    public static void shutdown() { 
     getSessionFactory().close(); 
    } 
} 

をし、このようなあなたのメインクラスでこれを呼び出す:あなたは、そのエラーを持っている 、あなたが休止状態を使用している場合

SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); 
Session session = sessionFactory.getCurrentSession(); 
6

だけAnnotationConfigurationに設定を()に変更()

+0

'AnnotationConfiguration'の使用は非推奨です。 – SureshS

1

あなたは(AnnotationConfigurationを使用することができます)の代わりにコンフィギュレーションの()

3

私は

Configuration cfg=new Configuration(); 
      cfg.configure("hibernate.cfg.xml");   
      SessionFactory factory=cfg.buildSessionFactory(); 
から私のコードを変更しました

から

SessionFactory factory=new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory(); 

また、POJOクラスに「@Id」アノテーションを追加していません。 "@Id"を追加した後、私は問題を完全に解決しました。

2

hibernateディストリビューションjars 3.6.4バージョンをダウンロードしてください.jre1.6.0_07バージョンを使用してください。これを行うとAnnotationConfiguration()の代わりに以下のように新しい構成オブジェクトを正常に作成することができます。

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); 
0
AnnotationConfiguration configuration=new AnnotationConfiguration(); 

    configuration.configure("hibernate.cfg.xml"); 

    SessionFactory factory=configuration.buildSessionFactory(); 

    Session session=factory.openSession(); 
+0

あなたが何をしたのか、なぜそれがうまくいったのかを記述することがあります。 –

+0

スタックオーバーフローへようこそ:-)コードのみの回答は、コミュニティにとって有用ではありません。 [解答]を見てください – JimHawkins

0

)(設定を変更してみてください。(設定)。buildSessionFactory()AnnotationConfigurationに()。(設定)。buildSessionFactory()と

関連する問題