Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数据库中hibernate保存的问题_Java_Mysql_Hibernate_Hql - Fatal编程技术网

Java 数据库中hibernate保存的问题

Java 数据库中hibernate保存的问题,java,mysql,hibernate,hql,Java,Mysql,Hibernate,Hql,我在hibernate中遇到了一个问题,问题是当我在数据库中保存时,但当我尝试查找最后一个插入时,他无法找到,直到我在数据库中执行了一些操作,例如查找或删除其他数据 我就是这样保存的: SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); session = sessionFactory.openSession(); Transaction tx = n

我在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;
}
public List getUserNames(int-startID,int-endID){
List userList=null;
试一试{
org.hibernate.Transaction tx=session.beginTransaction();
Query q=session.createQuery(“从用户u中选择u”);
userList=(List)q.List();
}捕获(例外e){
e、 printStackTrace();
}
返回用户列表;
}
我尝试了很多方法,但没有任何效果,比如更改saveOrUpdate以合并或只是保存,但没有任何效果更改这些方法。
感谢所有能够提供帮助的人。

不确定,但是Hibernate在您开始迭代结果(在您的案例中是userList)之前不会执行查询

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


请参见此处的示例:

在将数据保存到数据库之前,请尝试
刷新会话状态。通常不建议这样做,因为它本身会导致不保存会话对象以前获取的数据。stacktrace将有助于提供apt解决方案。

请尝试在保存功能中打印异常,以查看保存是否出现任何错误您正在跨这两种方法共享
会话
?它是承载这两个方法的类的成员吗(这是不好的)?这是用于单线程还是多线程?我的保存没有任何错误,我的插入有效,当我转到数据库终端显示最后一次插入时,他正常出现,但当我试图找到他时,他没有找到sorry@MarcelStör我不知道我是否理解你的问题,但我的插入方法在一个类中,我的搜索又开始了,我试过了,但没用,我试过之后,我的登录页面就没用了,我也试过了,你怎么说,我不能再插入了