wf2311 2015-06-30 08:54 采纳率: 0%
浏览 1995

hibernate执行几次数据库查询就卡住

1.判断坐标编号no在项目里是否已存在

        public boolean isExist(Long projectId, int no) {
        Query query = baseDao.createQuery("select t.id from Position t where t.project.id = ? and t.no = ?");
        query.setParameter(0, projectId);
        query.setParameter(1, no);
        return (query.list().size() > 0) ? true : false;
    }

单独查询,刷新多少次多可以得到结果
2. 查询指定项目里的坐标的最大编号值

    public Integer getMaxNo(Long projectId) {
        Query query = baseDao.createQuery("select max(t.no) from Position t where t.project.id = ?");
        query.setLong(0, projectId);
        return (Integer) query.uniqueResult();
    }

单独查询,刷新多少次多可以得到结果

3.保存坐标信息

     public void saveOrUpdate(Position position, Long projectId) {
        try {
            if (projectId != null) {
                Project project = (Project) baseDao.findById(Project.class, projectId);
                position.setProject(project);
            }
            //如果指定坐标编号在当前项目里已存在
            if (isExist(position.getProject().getId(), position.getNo())) {
                //改变该指定坐标编号的值为当前项目里最大坐标编号的值+1
                position.setNo(getMaxNo(position.getProject().getId()) + 1);
            }
            baseDao.saveOrUpdate(position);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

测试本方法时,前2次都可以正常执行,到第3次时,网页就会卡住;如果注释掉第2个if语句,就可以一直正常执行

  • 写回答

1条回答

  • 江南丨烟雨 2015-06-30 10:31
    关注

    hibernate查询卡死一般是session打开太多加上没有及时关闭造成的,所以打开session最好用getCurrentSession(),,,,别用openSession()

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料