我遇到了hibernate的问题,问题是当我保存在数据库中但是当我尝试找到最后一次插入时,他找不到直到我在数据库中做了一些动作,就像我找到或删除其他数据一样。
这是我保存的方式:
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来合并或者只是保存,但没有任何改变这一点。 感谢任何可以提供帮助的人。
答案 0 :(得分:0)
不确定,但在开始迭代结果之前,Hibernate不会执行查询(在你的情况下是userList)。
尝试在关闭会话之前迭代userList。
答案 1 :(得分:0)
在将数据保存到数据库http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/Session.html#refresh(java.lang.Object)之前,尝试refreshing
会话状态。通常不建议这样做,因为它有自己的后果,即不保存会话对象先前获取的数据。您的堆栈跟踪将有助于提供合适的解决方案。