-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 更改为合并或只是保存,但更改这些东西并没有任何区别。感谢任何可以提供帮助的人。

4

2 回答 2

0

不确定,但 Hibernate 在您开始迭代结果(在您的情况下为 userList)之前不会执行查询。

尝试在关闭会话之前迭代 userList。

请参阅此处的示例:Hibernate 查询语言,使用 HQL 选择查询

于 2013-05-27T11:33:38.197 回答
0

refreshing在将数据保存到数据库之前尝试会话状态http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/Session.html#refresh(java.lang.Object)。通常不建议这样做,因为它有其自身的后果,即不保存会话对象先前获取的数据。您的堆栈跟踪将有助于提供合适的解决方案。

于 2013-05-27T11:47:19.147 回答