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

    评论

报告相同问题?

悬赏问题

  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)