2013-05-27 38 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