开发者社区> 问答> 正文

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;
    }

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

  1. 查询指定项目里的坐标的最大编号值
    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语句,就可以一直正常执行

展开
收起
云栖技术 2016-06-02 14:29:29 2731 0
1 条回答
写回答
取消 提交回答
  • 社区爱好者,专为云栖社区服务!

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

    2019-07-17 19:24:51
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载