【发布时间】:2017-07-14 01:35:21
【问题描述】:
我有以下函数在 Oracle 序列上调用 nextval,但我注意到一个奇怪的行为。功能是:
public class DAOImplementation{
private static SessionFactory factory;
private Session session;
public BigDecimal getSequenceNextVal(){
BigDecimal result = null;
factory = HibernateUtil.getSessionFactory();
session = factory.openSession();
String sql = "select sequence_test.nextval from dual";
Query query = session.createSQLQuery(sql);
result = (BigDecimal) query.uniqueResult();
session.close();
return result;
}
}
当我在控制台中打印上述函数返回的值时,我可以看到正确的下一个值。但是,当我在数据库“select sequence_test.currval from dual”上运行时,该值与控制台中的值不对应。 如果我从 PL/SQL Developer 重新连接到 Oracle DB 并运行“select sequence_test.nextval from dual”,结果会增加 2(我猜一次是由 java 函数,一次是由手动执行的查询)。
你能帮我理解一下这种情况吗?
【问题讨论】:
标签: java oracle hibernate sequence