Java 没有提交休眠时,自动增量计数器不会重置

Java 没有提交休眠时,自动增量计数器不会重置,java,hibernate,Java,Hibernate,我正在使用hibernate,我正在插入一个新数据,但我没有提交它。但是,当我重复这个过程时,它显示了即使在我没有提交事务的情况下自动增加的值 Session session = HibernateSessionFactory.getSession(); Transaction transaction = session.beginTransaction(); VoucherDetail voucherDetail = new VoucherDetail(); vo

我正在使用hibernate,我正在插入一个新数据,但我没有提交它。但是,当我重复这个过程时,它显示了即使在我没有提交事务的情况下自动增加的值

Session session = HibernateSessionFactory.getSession(); 
Transaction transaction = session.beginTransaction();
VoucherDetail voucherDetail = new VoucherDetail();              
voucherDetail.setVoucher(voucher);
voucherDetail = (VoucherDetail) save(voucherDetail2, session, transaction);
//i commented these statements so i don't commit(for testing) 
//session.flush();              
//transaction.commit();
//session.close();

//Then i rollback and flush session for assurity
if(session.isOpen()){
        session.flush();    
        transaction.rollback();                                 
        session.close();
}

//My save function
@SuppressWarnings("unchecked")
public PAK save(ED newInstance, Session session, Transaction transaction) {        
    try {           

        session.saveOrUpdate(newInstance);           
        System.out.println("--------Transaction Committed");
        return (PAK) newInstance;

    } catch (Exception e) {

        try {
            session.merge(newInstance);                                  
            return (PAK) newInstance;
        } catch (HibernateException e1) {
            LOG.error(GD.class.getName(), e1);
        }

        LOG.error(GD.class.getName(), e);
    }           
    return null;
}

现在,当我在保存后查看voucherDetail对象时。它显示我的自动递增列名SNo,例如value=4。但由于我在重复此过程时不会提交事务,因此下次保存后计数器应再次显示4,但它显示5。为什么要将其保留在内存中,以及如何删除它。即使在停止并重新启动服务器时也会发生这种情况。它保持了价值。我不明白为什么。hibernate有点新

事务在数据库端。如果您在程序中增加并分配计数器,为什么还要重置计数器?即使我停止并重新启动服务器,也会发生这种情况。它保持了价值。我不明白为什么。对Hibernate来说有点陌生。我想我们需要更多的代码来查看错误发生的地方。我已经对它进行了一些编辑。我不认为额外的代码会有任何区别。这就是所用的一切。没有别的了。