Java 没有提交休眠时,自动增量计数器不会重置
我正在使用hibernate,我正在插入一个新数据,但我没有提交它。但是,当我重复这个过程时,它显示了即使在我没有提交事务的情况下自动增加的值Java 没有提交休眠时,自动增量计数器不会重置,java,hibernate,Java,Hibernate,我正在使用hibernate,我正在插入一个新数据,但我没有提交它。但是,当我重复这个过程时,它显示了即使在我没有提交事务的情况下自动增加的值 Session session = HibernateSessionFactory.getSession(); Transaction transaction = session.beginTransaction(); VoucherDetail voucherDetail = new VoucherDetail(); vo
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来说有点陌生。我想我们需要更多的代码来查看错误发生的地方。我已经对它进行了一些编辑。我不认为额外的代码会有任何区别。这就是所用的一切。没有别的了。