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()

    评论

报告相同问题?

悬赏问题

  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 如何提取csv文件中需要的列,将其整合为一篇完整文档,并进行jieba分词(语言-python)
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置