Java Hibernate从序列中减去一

Java Hibernate从序列中减去一,java,oracle,hibernate,Java,Oracle,Hibernate,我有一个现有的数据库模式,我正试图与Hibernate 4.1.6一起使用。我需要支持多个数据库版本,包括Oracle,因此我使用SequenceStyleGenerator生成id。我创建了一个序列,用于Oracle中的生成器 如果序列有一个现有的值,比如说2,那么我可以看到,当我调用实体上的save或update时,Hibernate调用序列上的nextval来获取下一个值并获取3,这是正确的。然后,由于某种原因,在Hibernate类OptimizerFactory中,Hibernate从

我有一个现有的数据库模式,我正试图与Hibernate 4.1.6一起使用。我需要支持多个数据库版本,包括Oracle,因此我使用SequenceStyleGenerator生成id。我创建了一个序列,用于Oracle中的生成器

如果序列有一个现有的值,比如说2,那么我可以看到,当我调用实体上的save或update时,Hibernate调用序列上的nextval来获取下一个值并获取3,这是正确的。然后,由于某种原因,在Hibernate类OptimizerFactory中,Hibernate从序列值中减去1以获得要使用的id,这会由于唯一的约束错误而失败-如果nextval为3,则已经使用了2


为什么Hibernate要从序列中减去1以获得用于id的值,以及如何让它按原样使用序列?

我在使用SequenceStyleGenerator的池优化器,问题与此有关。Hibernate文档说,当使用池优化器时,“我们只是将下一个组的起始值存储到数据库结构中,而不是与内存分组算法相结合的顺序值”。所以我猜当Hibernate读取nextval并得到3时,它减去1得到currval,它将其用作下一组的起始值


我将尝试对优化器使用none。。。此外,还可以尝试查找一些文档,这些文档详细解释了池式优化器,以及如果Hibernate以外的应用程序将使用相同的顺序插入数据,如何配置池式优化器。

您是否可以添加您目前尝试的代码