2017-06-11 15 views
0

を閉じて、私はこの非常に基本的なHibernateのコードを実行したい:例外 "メイン" java.lang.IllegalStateException:セッション/ EntityManagerのが

public static void main(String[] args) throws Exception 
    { 

     SessionFactory sessFact = HibernateUtil.getSessionFactory(); 
     Session session = sessFact.getCurrentSession(); 
     Transaction tr = session.beginTransaction(); 

     SystemUsers myContact = new SystemUsers(3); 
     SystemUsers yourContact = new SystemUsers(4); 
     SystemUsers yourContsact = new SystemUsers(5); 
     SystemUsers yourContssssact = new SystemUsers(6); 
     SystemUsers yourContssssasssct = new SystemUsers(7); 

     // Saving to the database 
     session.save(myContact); 
     session.save(yourContact); 
     session.save(yourContsact); 
     session.save(yourContssssact); 
     session.save(yourContssssasssct); 

     session.flush(); 
     tr.commit(); 

     List<SystemUsers> contactList = session.createQuery("from SYSTEM_USERS").list(); 

     for (SystemUsers contact : contactList) 
     { 
      System.out.println("Id: " + contact.getId()); 
     } 

     System.out.println("Successfully inserted"); 
     sessFact.close(); 
    } 

設定ファイル:

<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.show_sql">true</property> 
     <property name="hibernate.format_sql">true</property> 
     <property name="hibernate.dialect">org.hibernate.dialect.SQLiteDialect</property> 
     <property name="hibernate.connection.driver_class">org.sqlite.JDBC</property> 
     <property name="hibernate.connection.url">jdbc:sqlite:/C:/sqlite/test.sqlite</property> 
     <property name="hibernate.connection.username"></property> 
     <property name="hibernate.connection.password"></property> 
       <property name="hibernate.connection.release_mode">auto</property> 
       <property name="current_session_context_class">thread</property> 
       <property name="hibernate.connection.autoReconnect">true</property> 
     <property name="hibernate.hbm2ddl.auto">update</property> 
     <mapping class="com.web.models.SystemUsers"/> 
    </session-factory> 
</hibernate-configuration> 

私はエラーを取得する:

Exception in thread "main" java.lang.IllegalStateException: Session/EntityManager is closed 
    at org.hibernate.internal.AbstractSharedSessionContract.checkOpen(AbstractSharedSessionContract.java:337) 
    at org.hibernate.engine.spi.SharedSessionContractImplementor.checkOpen(SharedSessionContractImplementor.java:135) 
    at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:648) 
    at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:102) 

最新のHibernateバージョンを使用します。私はこの問題をどのように修正できるのかアドバイスをくれますか?

おそらく私は別の工場を初期化する必要がありますか?私は問題が

session.flush();//this will flush all the data in the session so for commmiting there wont be any data. 
tr.commit(); 

であると思い

+0

完全なスタックトレースを送信して、例外が発生する場所を確認できますか – karelss

答えて

0

はこれを試してみてください。

tr.commit(); 
session.flush(); 
関連する問題