不知道为什么我往Hibernate中插入一条记录后,打开数据库刷新后看了一下,发现里面已经有了那条数据,但是当我紧接着在查询记录总数是缺没有这一条,很是郁闷,请高手指定一二!

解决方案 »

  1.   

    没有提交的话数据库里面应该没有那条记录的呀,但是我插入一条记录后数据库刷新一下,里面已经有那条记录了,代码如下:(我的数据库中administrator表中的主键是id,但是id不是自动增长的,也不是int型的,是char的,6位,格式为:CKA012,意思就是说仓库管理员,12的获得就是我插入时候,先从数据库中读取全部记录,遍历id,比较其中的后三位数字,找出最大的一个,然后将新增加的这个administrator的id设为最大+1,然后再存入数据库)
    插入代码:public String saveAdministrator(Administrator admin) {
            Session s = null;
            Transaction tx = null;
            try {
                s = HibernateUtil.getSession();
                tx = s.beginTransaction();
                List<Administrator> administrators = new AdministratorDaoImpl().findAllAdministrator();
    //            定义idArray数组,用来存取表中管理员的id中的数字
                int[] idArray = new int[administrators.size()];
                System.out.println("目前数据库中记录为 : " + idArray.length);
                int i = 0;
                for (Administrator administrator : administrators) {
                    idArray[i++] = Integer.parseInt(administrator.getId().substring(3));
                }
    //            从idArray中找到最大的id值
                int idMax = idArray[0];
                for (int j = 0; j < idArray.length; j++) {
                    if (idMax <= idArray[j]) {
                        idMax = idArray[j];
                    }
                }
                
                if (admin.getType() == 1) {
                    admin.setId("CKA" + String.format("%03d", idMax+1));
                }else if(admin.getType() == 2){
                    admin.setId("CGA" + String.format("%03d", idMax+1));
                }else if(admin.getType() == 3){
                    admin.setId("GCA" + String.format("%03d", idMax+1));
                }
                s.save(admin);
                tx.commit();
                return admin.getId();
            }finally{
                if (s != null) {
                    s.close();
                }
            }
        }
    查找代码:
    public List findAllAdministrator() {
            Session s = null;
            Transaction tx = null;
            try {
                s = HibernateUtil.getSession();
                tx = s.beginTransaction();
                List adminList = s.createQuery("from Administrator as admin").list();
                Hibernate.initialize(adminList);
                return adminList;
            } finally{
                if (s != null) {
                    s.close();
                }
            }
        }
    HibernateUtil是Netbeans自动生成的,就是按照上面的思路来进行管理员添加的,但是每增加一个记录之后,紧接着插入第二个记录时就会发现此时获取的数据库记录没有增加,不知道为什么……
      

  2.   

    在saveAdministrator方法中把session对象作为参数传到findAllAdministrator(Session s)
    看看..
      

  3.   

    你用的是两个不同session
    你一个session操作并没有让另一个知道
    所以你查询出来是没有的