2013-05-27 94 views
-1

我遇到了一個與休眠問題,問題是當我保存在數據庫中,但是當我嘗試找到這個最後一個插入,他不找到,直到我在數據庫中做了一些動作,像我查找或刪除其他數據。休眠保存在數據庫中的問題

這是我如何保存:

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); 
    session = sessionFactory.openSession(); 
    Transaction tx = null; 
    try { 
     tx = session.beginTransaction(); 
     session.saveOrUpdate(o); 
     session.saveOrUpdate(o1); // o and o1 are two differents objects 
     tx.commit(); 

    } catch (Exception e) { 
     if (tx != null) { 
      tx.rollback(); 
     } 
    } 

這是我試圖找到在數據庫中插入後:

public List getUserNames(int startID, int endID) { 
    List<User> userList = null; 
    try { 
     org.hibernate.Transaction tx = session.beginTransaction(); 
     Query q = session.createQuery("select u from User u "); 
     userList = (List<User>) q.list(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return userList; 
} 

我嘗試了很多東西,但沒有做出區別,像將saveOrUpdate更改爲合併或保存,但並沒有改變這一點。 感謝任何可以幫助的人。

+1

嘗試在保存功能中打印異常以查看保存是否給出了錯誤 –

+0

您是否在兩種方法中共享'session'?它是否是承載這兩種方法的類的成員(這會很糟糕)?這是針對單個線程還是更多? –

+0

我的保存沒有任何錯誤,我的插入工作,當我到數據庫終端顯示這最後插入時,他正常顯示,但是當我試圖找到他時,他沒有找到 – sams15

回答

0

不確定,但直到開始迭代結果(在您的情況userList),Hibernate纔會執行查詢。

嘗試在關閉會話前迭代userList。

這裏見例如:Hibernate Query Language, Using HQL Select Query

+0

我現在嘗試這樣做,但沒有工作,我做到這一點後,我的登錄頁面不起作用更多 – sams15